如何检查列表中的字典是否唯一?

时间:2018-07-17 15:14:22

标签: python list dictionary compare

关于Dictioranies的内容,我发现了一些方法,但不幸的是没有。我希望这个问题不会重复。

我的代码:

import os
import csv
import glob

os.chdir("/Users/x/PycharmProjects/x")

listme = list()

for csvs in glob.glob("*.csv"):
    with open(csvs, mode="r") as csvfile:
        csv_reader = csv.DictReader(csvfile)

        for row in csv_reader:
            spek = {"name": row['name'], "party": row['group'], "term":row['term']}
            listme.append(spek)

for element in listme:
    print(element)

我的输出(约5000个元素):

{'name': 'Erwin Stahl', 'party': 'SPD', 'term': '9'}
{'name': 'Eugen Glombig', 'party': 'SPD', 'term': '9'}
{'name': 'Eugen von der Wiesche', 'party': 'SPD', 'term': '9'}
{'name': 'Ferdinand Tillmann', 'party': 'CDU', 'term': '9'}
{'name': 'Franz Amrehn', 'party': 'CDU', 'term': '9'}
{'name': 'Franz Handlos', 'party': 'CSU', 'term': '9'}
{'name': 'Franz Heinrich Krey', 'party': 'CDU', 'term': '9'}
{'name': 'Franz Josef Conrad', 'party': 'CDU', 'term': '9'}

我现在如何检查一个学期中同名同伴是否只能从同一方退出一次?名称和政党的组合可能会出现,但不能使用同一术语。

提前谢谢!

2 个答案:

答案 0 :(得分:1)

您需要将dict对象变成可哈希的对象。一种选择是将其项目变成frozenset

s = set()
for d in listme:
  frz = frozenset(d.items())  # hashable data structure
  if frz in s:
    print(d)  # print duplicates
  else:
    s.add(frz)

答案 1 :(得分:0)

我的尝试(使用Expand中的Counter

itertools