我希望检查内容,如果myList中的MyNewFile。它是我的代码,但它不会那么好。
myList=[{"text": "1"},{"text": "2"},{"text": "3"},{"text": "4"},{"text": "5"},{"text": "6"}]
myNewFile=[{"text": "10"},{"text": "5"},{"text": "7"},{"text": "8"}]
for index in range(len(myNewFile)):
if (myList[index]["text"]==myNewFile[index]["text"]):
print "same"
else:
print "input"
最终结果:
它有一个相同的值(都有text =" 5")。任何消化?感谢
答案 0 :(得分:1)
最简单的方法是将两个列表转换为集合,然后设置交集。
对于列表中的每个字典,获取items()
列表并将每个元素传递给set
函数。
set1 = set(item for d in myList for item in d.items())
set2 = set(item for d in myNewList for item in d.items())
此时这些集合看起来像这样
set([('text', '5'), ('text', '4'), ('text', '6'), ('text', '1'), ('text', '3'), ('text', '2')])
set([('text', '7'), ('text', '10'), ('text', '5'), ('text', '8')])
然后只需与&
运算符交集,并使用字典理解重建原始字典,就像这样
print {item[0]:item[1] for item in set1 & set2}
# {'text': '5'}