我有一个元组字典作为键,并且列表的值叫做 dictionary ,如下所示,我只想更改列表中元素的值,即67。例如第二个元素属于键(1,2,3)的列表中的。我已经编写了以下代码,但收到一条错误消息:“列表索引必须是整数或切片,而不是str”。
dictionary = { (1,2,3) : [234,67],
(2,2,3) : [4,7]
}
for i in dictionary:
for j in i:
if dictionary[i][j] == 67:
dictionary[i][j] = 50
有人可以帮助我了解我在做什么错吗?我真的很绝望
答案 0 :(得分:3)
==
用于比较; =
用于分配。但是,您在对待i
方面也有一个错误。 i
是与(1,2,3)
类似的键,但是您将其视为值dictionary[i]
。如果要修改列表,则还需要在列表中添加索引,因此使用enumerate
会有所帮助。
for i in dictionary: # i is tuple like (1,2,3)
# enumerate(dictionary[i]) yields a sequence of tuples
# like (0, 234), (1, 67)
for j, value in enumerate(dictionary[i]):
if value == 67:
dictionary[i][j] = 50
就像enumerate
从列表中为您提供索引和值一样,您可以在迭代items
时使用dict
方法来获取键和值。
# list_value stands in for dictionary[i]
for i, list_value in dictionary.items():
for j, value in enumerate(list_value):
if value == 67:
list_value[j] = 50
答案 1 :(得分:2)
您的代码中有很多错误,但这应该可以解决:
for i in dictionary:
for j in range(len(dictionary[i])):
if dictionary[i][j] == 67:
dictionary[i][j] = 50
在您的代码中,for j in i
是指字典键中的数字。这无法更改。