Pythonでは、リスト内の辞書をインデックスするためのいくつかの方法があります。ここでは、その一部を紹介します。
方法1: enumerate
とリスト内包表記を使用する
Pythonのenumerate
関数とリスト内包表記を使用して、リスト内の辞書を効率的にインデックスすることができます。以下に例を示します。
lst = [{'id':'1234','name':'Jason'}, {'id':'2345','name':'Tom'}, {'id':'3456','name':'Art'}]
tom_index = next((index for (index, d) in enumerate(lst) if d["name"] == "Tom"), None)
このコードは、name
がTom
である辞書のインデックスを返します。None
は、該当する辞書が見つからなかった場合のデフォルト値です。
方法2: 辞書を使用する
頻繁に特定の名前でフェッチする必要がある場合、名前でそれらをインデックス化することを検討してみてください。これにより、取得操作がO(1)時間になります。
def build_dict(seq, key):
return dict((d[key], dict(d, index=index)) for (index, d) in enumerate(seq))
people_by_name = build_dict(lst, key="name")
tom_info = people_by_name.get("Tom") # {'index': 1, 'id': '2345', 'name': 'Tom'}
このコードは、名前をキーとする辞書を作成します。その結果、名前で人々を直接検索することができます。
これらの方法を使用すると、Pythonのリスト内の辞書を効率的にインデックスすることができます。適切な方法を選択することで、コードのパフォーマンスと可読性を向上させることができます。