你的意思是這樣的嗎?
d = { 0 : (1, 2, 3) , 1 : (2, 3, 4), 2: (5, 6, 7)}
for key in d.keys():
for val in d[key]:
try:
d[key]+=d[val]
except KeyError:
pass
給
>>> d
{0: (1, 2, 3, 2, 3, 4, 5, 6, 7), 1: (2, 3, 4, 5, 6, 7), 2: (5, 6, 7)}
如果你想唯一值,然後添加d[key] = tuple(set(d[key]))
到for key in d.keys()
循環的結束。
給
>>> d
{0: (1, 2, 3, 4, 5, 6, 7), 1: (2, 3, 4, 5, 6, 7), 2: (5, 6, 7)}
PS:d = {[ 0 : 1, 2, 3], [1 : 2, 3, 4], [2: 5, 6, 7]}
是無效的蟒蛇!
編輯:看評論。
d = { 0 : [1, 2, 3] , 1 : [2, 3, 4], 2: [5, 6, 7]}
for key in d.keys():
orig_vals=d[key]
new_vals=[]
for val in orig_vals:
try:
new_vals+=d[val]
except KeyError:
pass
d[key] = list(set(new_vals)-set(orig_vals))
給
>>> d
{0: [4, 5, 6, 7], 1: [5, 6, 7], 2: []}
如果你想避免清理了未與其他鍵的值,例如[5,6,7] 2,然後最後一行改爲
if new_vals:
d[key] = list(set(new_vals)-set(orig_vals))
這給
>>> d
{0: [4, 5, 6, 7], 1: [5, 6, 7], 2: [5, 6, 7]}
編輯2:看評論。
d = { 0 : [1, 2, 3] , 1 : [2, 3, 4], 2: [5, 6, 7]}
for key in d.keys():
orig_vals=d[key]
new_vals=[]
count = 0
for val in orig_vals:
try:
new_vals+=d[val]
count+=1
if count >= yournumberhere: break
except KeyError:
pass
d[key] = list(set(new_vals)-set(orig_vals))
哦,是謝謝!這絕對是我想要做的事情!是的,我剛剛意識到自己在字典上的錯誤,也感謝你指出了這一點。是否也可以改變鍵的值,使它只是值的值? (這個術語是相當混亂哈哈) – James
我不明白,你的價值觀是什麼意思?每個值有多個鍵? – seth
哦,你的意思是把'd [key]'的賦值改爲'd [val]'的賦值嗎?例如'0:(1,2,3)'會轉到'0:(2,3,4,5,6,7)',或者轉到'0:[(2,3,4),(5, 6,7)]'? – seth