如何更改属于字典的列表中元素的值?

时间:2019-04-05 17:37:36

标签: python list dictionary data-structures tuples

我有一个元组字典作为键,并且列表的值叫做 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

有人可以帮助我了解我在做什么错吗?我真的很绝望

2 个答案:

答案 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是指字典键中的数字。这无法更改。