你如何用Python中的列表来交叉检查字典?

Fre*_*son 1 python dictionary list

说我有一个清单

list: [keith, roger, david], [5, nobody, 31], [attack, thomas, 4]
Run Code Online (Sandbox Code Playgroud)

和一本字典

dictionary: '55': <Trachea>, 'Roger': <Bert>
Run Code Online (Sandbox Code Playgroud)

我想删除字典中与列表列表的SECOND部分不匹配的项目.在这个例子中,我想摆脱'55':但不是'Roger':. 谢谢!

nin*_*cko 5

#!/usr/bin/python3

# myList = [['keith', 'roger', 'david'], [5, 'nobody', 31], ['attack', 'thomas', 4]]
# myDict = {'55': '...', 'roger': '...'}

secondElements = {x[1] for x in myList}

filteredDict = {k:v for k,v in myDict.items() if (k in secondElements)}

print(filteredDict)
# prints: {'roger': '...'}
Run Code Online (Sandbox Code Playgroud)

有更快的方法可以做到这一点,但是创建一个集合secondElements将加速查询并使其有O(1)时间.我编辑了您的列表,因为存在区分大小写的问题,但您也可以使用(k.lower() in secondElements).