我试图找到相互的数字不是在当前值,但关键是在其他值我有一个字典,我需要将当前值替换为键在另一个键的值中的值。所以我的字典是这样的:
dict_in = {'1': [3, 5, 8, 9, 10, 12],
'4': [2, 5, 7, 8, 9],
'2': [3, 4, 7, 6, 13],
'12': [1, 7, 5, 9],
'3': [9, 11, 10, 1, 2, 13],
'10': [1, 3, 6, 11],
'5': [4, 1, 7, 11, 12],
'13': [2, 3],
'8': [1, 6, 4, 11],
'7': [5, 2, 4, 9, 12],
'11': [3, 5, 10, 8],
'9': [12, 1, 3, 6, 4, 7]}
我所期待的是这样的东西1:[7, 11, 10, 2, 13, 6, 11, 4, 7, 11, 12, 6, 4, 11, 12, 6, 6, 4, 7, 12, 12, 6, 4, 7],因为1在12,3,10,5,8,9的值中所以我希望这些键的所有值现在都是1的值,而不是[3,5,8,9,10,12]。希望我没有把大家弄糊涂。
我的代码在这里:
dict_out = {}
for key in dict_in:
for k,v in dict_in.items():
for y in v:
if int(key) in v and y != int(key):
dict_out.setdefault(int(key), []).append(y)
我得到的是数字1:
1: [7, 5, 9, 9, 11, 10, 2, 13, 3, 6, 11, 4, 7, 11, 12, 6, 4, 11, 12, 3, 6, 4, 7]
所以它不应该包含3,5,9或12。
所以我想要另一组值中的所有值,如果这些值的键是另一组值,但我不想要键的当前值。在某个地方,我没有检查当前值与"潜在"值。
这可能不是最优化的解决方案,但它对你的代码很好:
dict_in = {'1': [3, 5, 8, 9, 10, 12],
'4': [2, 5, 7, 8, 9],
'2': [3, 4, 7, 6, 13],
'12': [1, 7, 5, 9],
'3': [9, 11, 10, 1, 2, 13],
'10': [1, 3, 6, 11],
'5': [4, 1, 7, 11, 12],
'13': [2, 3],
'8': [1, 6, 4, 11],
'7': [5, 2, 4, 9, 12],
'11': [3, 5, 10, 8],
'9': [12, 1, 3, 6, 4, 7]}
dict_out = {}
for key in dict_in:
for k,v in dict_in.items():
for y in v:
if (int(key) in v) and (y != int(key)) and (y not in dict_in[key]):
dict_out.setdefault(int(key), []).append(y)
print(dict_out)
我已经添加了另一个条件应该使它工作:)