Python在特定键的值重复时删除字典项

Python在特定键的值重复时删除字典项,python,Python,我有一本这样的字典: nodes = [ {"name": n1, "nodename": nod1, "nodetype": t1, "nodeip": nip1}, {"name": n2, "nodename": nod2, "nodetype": t2, "nodeip": nip2}, {"name": n3, "nodename": nod3, "nodetype": t1, "nodeip": nip3}, {"name": n4, "nodena

我有一本这样的字典:

nodes = [ 
    {"name": n1, "nodename": nod1, "nodetype": t1, "nodeip": nip1},
    {"name": n2, "nodename": nod2, "nodetype": t2, "nodeip": nip2},
    {"name": n3, "nodename": nod3, "nodetype": t1, "nodeip": nip3},
    {"name": n4, "nodename": nod4, "nodetype": t3, "nodeip": nip4},
    {"name": n5, "nodename": nod5, "nodetype": t2, "nodeip": nip5},
]
我想删除在“节点类型”中具有重复值的所有键,例如:


选择n1、n3或n2、n5中的哪一个并不重要。 我怎样才能得到上述结果

我试着迭代如下值:

seen = set()
uniq_nodes_per_type = {}
for node in node_list.items():
    nodetype = node["nodetype"]
    if nodetype not in seen:
        seen.add(nodetype)
        uniq_nodes.update(node)

假设您的输入是一个目录列表:

nodes = [ 
    {"name": "n1", "nodename": "nod1", "nodetype": "t1", "nodeip": "nip1"},
    {"name": "n2", "nodename": "nod2", "nodetype": "t2", "nodeip": "nip2"},
    {"name": "n3", "nodename": "nod3", "nodetype": "t1", "nodeip": "nip3"},
    {"name": "n4", "nodename": "nod4", "nodetype": "t3", "nodeip": "nip4"},
    {"name": "n5", "nodename": "nod5", "nodetype": "t2", "nodeip": "nip5"},
]
基于
nodetype
键构建字典将删除重复项:

nodetype_dict = {x["nodetype"]: x for x in nodes}

sorted(nodetype_dict.values(), key=lambda x: x["nodetype"])
[{'name': 'n3', 'nodeip': 'nip3', 'nodename': 'nod3', 'nodetype': 't1'},
 {'name': 'n5', 'nodeip': 'nip5', 'nodename': 'nod5', 'nodetype': 't2'},
 {'name': 'n4', 'nodeip': 'nip4', 'nodename': 'nod4', 'nodetype': 't3'}]

字典不能有重复的键。因此,您的示例无效,请重新检查dict列表?maybeYes,我更新了dict,它错了。预期的输出是什么?您要保留的复制目录中的哪一个并不重要,将选择n1、n3或n2、n5中的哪一个。
nodetype_dict = {x["nodetype"]: x for x in nodes}

sorted(nodetype_dict.values(), key=lambda x: x["nodetype"])
[{'name': 'n3', 'nodeip': 'nip3', 'nodename': 'nod3', 'nodetype': 't1'},
 {'name': 'n5', 'nodeip': 'nip5', 'nodename': 'nod5', 'nodetype': 't2'},
 {'name': 'n4', 'nodeip': 'nip4', 'nodename': 'nod4', 'nodetype': 't3'}]