今回は辞書型のリストから欲しいIDを検索して紐づく情報を返す関数をご紹介します。
1 |
data = [{'id':'111', 'itemname':'AAA'},{'id':'222', 'itemname':'BBB'},{'id':'333', 'itemname':'CCC'},{'id':'111', 'itemname':'AAA'}] |
このような辞書型4つのリストがあってこの中からid「111」のitemname「AAA」を取得したいと思います。
ifで条件分岐したリスト内包表記の
[式 for 任意の変数名 in イテラブルオブジェクト if 条件式]にまとめると、このような関数でリストの最初に出てきたitemnameを取得出来ます。
1 2 3 |
def SearchDictionary(key, items): values = [x['itemname'] for x in items if 'id' in x and 'itemname' in x and x['id'] == key] return values[0] if values else None |
まとめると・・・
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
data = [{'id':'111', 'itemname':'AAA'},{'id':'222', 'itemname':'BBB'},{'id':'333', 'itemname':'CCC'},{'id':'111', 'itemname':'AAA'}] def SearchDictionary(key, items): values = [x['itemname'] for x in items if 'id' in x and 'itemname' in x and x['id'] == key] return values[0] if values else None def main(): itemname = SearchDictionary('111' ,data) print(itemname) if __name__=='__main__': main() #AAA |
このようにitemnameの「AAA」を取得することが出来ました。
また、このようにすることによって
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
data = [{'id':'111', 'itemname':'AAA'},{'id':'222', 'itemname':'BBB'},{'id':'333', 'itemname':'CCC'},{'id':'111', 'itemname':'AAA'}] def SearchDictionary(key, items): values = [x['itemname'] for x in items if 'id' in x and 'itemname' in x and x['id'] == key] return values[0] if values else None def main(): itemname = SearchDictionary('111' ,data) print(itemname) if __name__=='__main__': main() #['AAA', 'AAA'] |
リスト形式で、合致するid全てのitemnameを取得することも出来ます。
是非参考にして下さいね!