我如何用右 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)
大家好,我在字典中有一个图表,我想更新 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)