Python在指定键的值为dupli时删除字典项

2024-10-01 00:15:22 发布

您现在位置: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, "nodename": nod4, "nodetype": t3, "nodeip": nip4},
    {"name": n5, "nodename": nod5, "nodetype": t2, "nodeip": nip5},
]

我想删除所有在“nodetype”中有重复值的键,例如:

uniq_nodes_per_type = [ 
    {"name": n1, "nodename": nod1, "nodetype": t1, "nodeip": nip1},
    {"name": n2, "nodename": nod2, "nodetype": t2, "nodeip": nip2},
    {"name": n4, "nodename": nod4, "nodetype": t3, "nodeip": nip4},
]

选择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)

Tags: namenodenodest1seenn2t2uniq
1条回答
网友
1楼 · 发布于 2024-10-01 00:15:22

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

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

相关问题 更多 >