从Python的字典列表中删除冗余字典

时间:2018-08-01 13:26:41

标签: python python-2.7 list dictionary redundancy

可以说我有一个词典列表:

[{'county': 'Lincoln County', 'state': 'SD', 'fips': '46083'}, {'county': 'Minnehaha County', 'state': 'SD', 'fips': '46099'}, {'county': 'Minnehaha County', 'state': 'SD', 'fips': '46099'},...]

在上面的示例中,此列表中的两个词典相同。我想做的是通过fips键检查并查看值。我知道我可以使用类似的方法来检入字典,并且实质上是创建仅包含唯一条目的新列表:

result = {}

for key,value in dictionary.items():
    if value not in result.values():
        result[key] = value

print result

但是我很难将其应用于词典的 列表 。我在这里做什么错了?

for i in dictionary:
    for key,value in dictionary[i].items():
        if value not in result.values():
            result[key] = value

1 个答案:

答案 0 :(得分:2)

您可以使用检查标记。

例如:

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'}]