我如何用右 key/value 更新字典中的图表?

How can I update a graph in a Dictionary with right key/value?

大家好,我在字典中有一个图表,我想更新 key/value 以便不跳过“5”,这是一个先前已删除的节点,因此生成 6 和 7变为 5 和 6,因此也更新值,因为这是一个图表

{'1': ['2', '3', '6'], '3': ['1', '2', '4'], '2': ['3', '4'], '4': ['2', '3'], '7': ['6'], '6': ['1', '7']}

我想要的输出应该是这样的:

{'1': ['2', '3', '5'], '3': ['1', '2', '4'], '2': ['3', '4'], '4': ['2', '3'], '6': ['5'], '5': ['1', '6']}

基本上根据已删除的 key/node 重新调整所有内容。

你可以使用这个:

mapping = {'6': '5', '7': '6'}
result = {}

for key, value in graph.items():
    val = [mapping.get(val, val) for val in value]
    k = mapping.get(key, key)
    result[k] = val
print(result)

给出:

{'1': ['2', '3', '5'], '3': ['1', '2', '4'], '2': ['3', '4'], '4': ['2', '3'], '6': ['5'], '5': ['1', '6']}

等价的一行是:

>>> result = {mapping.get(key, key): [mapping.get(v, v) for v in values]
              for key, values in graph.items()}

另一种解决方案可能是:

def get_ordered_dict(_dict):
    return dict(sorted(_dict.items()))

mydict = {'1': ['2', '3', '6'], '3': ['1', '2', '4'], '4': ['2', '3'], '7': ['6'], '2': ['3', '4'], '6': ['1', '7']}

mydict.update({'5': ['2', '3', '6']})

newdict = get_ordered_dict(mydict)

print(newdict)