D = {'A':
[ ( '1','2' ), ( '3', '4' )],
'B':
[ ( '5','6' ), ( '7','8' ) ]
}
x = '6'
for key in D:
for val in D[key]:
if x in val:
val=('50','60')
print(D)
您好,我想对键B的值进行更改,但我想知道为什么它不显示此键:
D = {'A':
[ ( '1','2' ), ( '3','4' ) ],
'B':
[ ( '50','60' ), ( '7','8' ) ]
}
我该如何解决?
答案 0 :(得分:3)
通过执行val=('50','60')
,您将替换变量本身,而不是列表的内容。
for d_val in D.values():
for rank, val in enumerate(d_val):
if x in val:
d_val[rank] = ('50', '80')
答案 1 :(得分:0)
val
是对该元素的本地引用。覆盖它时,您只需为该变量分配一个新的元组-它与包含它的列表无关。相反,您可以循环列表的索引并直接更新列表:
for key in D:
for i in range(len(D[key])):
if x in D[key][i]:
D[key][i] = (50,50)
答案 2 :(得分:0)
您可以使用字典理解功能在一行中完成此操作。
这是您的代码,用于定义字典d
和值x
d = {'A':
[ ( '1','2' ), ( '3', '4' )],
'B':
[ ( '5','6' ), ( '7','8' ) ]
}
x = '6'
下面一行代码将使用新值再次创建字典d
。为了向您显示d
和r
的不同仅存在很小的差异,我保留了字典d
。
r = {k:[(50,60) if x in i else i for i in d[k]] for k in d.keys()}
为了确保只有一项更改,我同时打印了d
和r
。
print (d)
print (r)
输出如下:
{'A': [('1', '2'), ('3', '4')], 'B': [('5', '6'), ('7', '8')]}
{'A': [('1', '2'), ('3', '4')], 'B': [(50, 60), ('7', '8')]}
答案 3 :(得分:0)
无法编辑对话。你去!祝你有美好的一天!