python - 如何检查列表中的字典是否唯一?
问题描述
我找到了一些方法,但不幸的是,没有找到关于字典内容的方法。我希望这个问题不是重复的。
我的代码:
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'}
我现在如何检查一个术语中,同名的人是否只从同一方退出一次?名称和政党组合可能会出现,但不会出现在同一个词中。
先感谢您!
解决方案
你需要把你的dict
对象变成 sth 可散列的。一种选择是将他们的项目变成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)
推荐阅读
- c - 以 void 指针为参数并返回 void 指针的函数
- laravel - 将附加参数传递给 Laravel Eloquent API 资源
- excel - 陷得太深。将 If 与 And 语句混合使用。我需要一个数组吗?
- python - 如何根据标签值分离数据框?
- r - lapply 中的命名列
- sql - 将数量为 x 的记录复制到另一个表中数量 = 1 的 x 个实例
- node.js - 在linux centos上找不到现有的模块节点js
- javascript - 带有 slug 值的动态下拉菜单和子菜单 php mysqli
- node.js - 我的请求代码没有打印 API 的正文
- java - 偶尔获取 JDBC 开始事务失败,然后自动恢复