Pythonでは...要素のリスト 'my_list'と、いくつかのキーが 'my_list'で一致する辞書 'my_dict'があります。
辞書を検索して、「my_list」要素に一致するキーのキーと値のペアを取得します。
私はこれを試しました...
if any(x in my_dict for x in my_list):
print set(my_list)&set(my_dict)
しかし、それは仕事をしません。
(型名との競合を避けるため、list
をmy_list
に、dict
をmy_dict
に名前変更しました。)
パフォーマンスを向上させるには、リストを反復処理し、辞書のメンバーシップを確認する必要があります。
for k in my_list:
if k in my_dict:
print k, my_dict[k]
これらのキーと値のペアから新しい辞書を作成したい場合は、
new_dict = {k: my_dict[k] for k in my_list if k in my_dict}
変数名としてdict
およびlist
を使用しないでください。それらは組み込み関数をシャドウします。リストl
と辞書d
を想定:
kv = [(k, d[k]) for k in l if k in d]
_ new_dict = dict((k, v) for k, v in dict.iteritems() if k in list)
_
リストをセットに変換set(list)
may顕著な速度の向上をもたらします
これを試して:
mydict = {'one': 1, 'two': 2, 'three': 3}
mykeys = ['three', 'one','ten']
newList={k:mydict[k] for k in mykeys if k in mydict}
print newList
{'three': 3, 'one': 1}
print([kv for kv in dict.items() if kv[0] in list])
について
これはそのための1行のソリューションです
{i:my_dict[i] for i in set(my_dict.keys()).intersection(set(my_list))}