Python检查数组中的重复项

时间:2014-11-04 15:28:08

标签: python arrays dictionary

我希望检查内容,如果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")。任何消化?感谢

1 个答案:

答案 0 :(得分:1)

最简单的方法是将两个列表转换为集合,然后设置交集。

  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())
    
  2. 此时这些集合看起来像这样

    set([('text', '5'), ('text', '4'), ('text', '6'), ('text', '1'), ('text', '3'), ('text', '2')])
    set([('text', '7'), ('text', '10'), ('text', '5'), ('text', '8')])
    
    1. 然后只需与&运算符交集,并使用字典理解重建原始字典,就像这样

      print {item[0]:item[1] for item in set1 & set2}
      # {'text': '5'}