如何在列表中快速找到重复的词典?

2024-04-16 10:34:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典列表,例如:

list_of_clients = [
    {"Name": "Alex", "Surname": "Dorfman", ...},
    {"Name": "Serge", "Surname": "Ioffe"}, ...
]

我知道同一个客户端的列表中有重复的字典。你知道吗

有没有办法快速打印出来?你知道吗

谢谢!你知道吗


Tags: ofname客户端列表字典surnamelistclients
2条回答

您可以尝试:

res = set(tuple(client.items() 
                for client in list_of_clients 
                if list_of_clients.count(client) > 1))

set()将删除结果中的重复项,而tuple()是必需的(至少在Python3中是这样),因为items()本身仍然是不可散列的。你知道吗

正如其他人所提到的,这将不会保持项目的秩序,但如果你只是想删除重复这是足够的。你知道吗

你可以保留一个set已经看到的名字。您必须定义应该考虑哪些键。在这种情况下:["Name", "Surname"]。如果需要,只需添加更多:

list_of_clients = [{"Name": "Alex", "Surname": "Dorfman"}, {"Name": "Serge", "Surname": "Ioffe"}, {"Name": "Alex", "Surname": "Dorfman"}, {"Name": "Serge", "Surname": "Ioffe"}]

already_seen = set()

for client in list_of_clients:
    complete_name = tuple(client.get(k) for k in ["Name", "Surname"])
    if complete_name in already_seen:
        print("Duplicate : %s" % (complete_name,))
    already_seen.add(complete_name)

它输出:

Duplicate : ('Alex', 'Dorfman')
Duplicate : ('Serge', 'Ioffe')

相关问题 更多 >