从 Python 中的词典列表中删除冗余词典
Removing a redundant dictionary from a list of dictionaries in Python
假设我有一个字典列表:
[{'county': 'Lincoln County', 'state': 'SD', 'fips': '46083'}, {'county': 'Minnehaha County', 'state': 'SD', 'fips': '46099'}, {'county': 'Minnehaha County', 'state': 'SD', 'fips': '46099'},...]
在上面的示例中,此列表中的 2 个词典是相同的。我想要做的是通过 fips
键检查并查看值。我知道我可以使用这样的东西来检查字典,本质上,创建一个只有唯一条目的新列表:
result = {}
for key,value in dictionary.items():
if value not in result.values():
result[key] = value
print result
但我很难将其应用于 list 词典。我在这里做错了什么?
for i in dictionary:
for key,value in dictionary[i].items():
if value not in result.values():
result[key] = value
您可以使用检查标志。
例如:
d = [{'county': 'Lincoln County', 'state': 'SD', 'fips': '46083'}, {'county': 'Minnehaha County', 'state': 'SD', 'fips': '46099'}, {'county': 'Minnehaha County', 'state': 'SD', 'fips': '46099'}]
check_val = set()
res = []
for i in d:
if i["fips"] not in check_val:
res.append(i)
check_val.add(i["fips"])
print(res)
输出:
[{'county': 'Lincoln County', 'state': 'SD', 'fips': '46083'}, {'county': 'Minnehaha County', 'state': 'SD', 'fips': '46099'}]
假设我有一个字典列表:
[{'county': 'Lincoln County', 'state': 'SD', 'fips': '46083'}, {'county': 'Minnehaha County', 'state': 'SD', 'fips': '46099'}, {'county': 'Minnehaha County', 'state': 'SD', 'fips': '46099'},...]
在上面的示例中,此列表中的 2 个词典是相同的。我想要做的是通过 fips
键检查并查看值。我知道我可以使用这样的东西来检查字典,本质上,创建一个只有唯一条目的新列表:
result = {}
for key,value in dictionary.items():
if value not in result.values():
result[key] = value
print result
但我很难将其应用于 list 词典。我在这里做错了什么?
for i in dictionary:
for key,value in dictionary[i].items():
if value not in result.values():
result[key] = value
您可以使用检查标志。
例如:
d = [{'county': 'Lincoln County', 'state': 'SD', 'fips': '46083'}, {'county': 'Minnehaha County', 'state': 'SD', 'fips': '46099'}, {'county': 'Minnehaha County', 'state': 'SD', 'fips': '46099'}]
check_val = set()
res = []
for i in d:
if i["fips"] not in check_val:
res.append(i)
check_val.add(i["fips"])
print(res)
输出:
[{'county': 'Lincoln County', 'state': 'SD', 'fips': '46083'}, {'county': 'Minnehaha County', 'state': 'SD', 'fips': '46099'}]