使用Dictionary替换Python列表中的元素

时间:2017-11-28 02:41:23

标签: python list dictionary

我有两个项目:国家/地区代码列表为2个字符的字符串,以及将每个字符串映射到值的字典。我想遍历列表并将每个元素更改为其对应的值。尝试以下方法:

countryList = kData['country'].tolist()
for i in countryList:
    i = countryCodes[i]
    print(i)

print(countryList)

结果如下:

75
234
39
['FR', 'GB', 'CA']

当我想要输出时:

75
234
39
[75, 234, 39]

即使我设置了列表中的每个元素并通过打印来验证它已被更改,但当我整体打印列表时,更改无法继续进行。我能做错什么?

2 个答案:

答案 0 :(得分:3)

您只是更改变量i所指的内容。

最好创建一个新列表:

countryList = kData['country'].tolist()

newList = []

for i in countryList:
    newList.append(countryCodes[i])
    print(i)

countryList = newList

print(countryList)

这可以缩短,但我不想让你感到困惑。

答案 1 :(得分:2)

for i in countryList:
    i = countryCodes[i]

应该改为

for index, val in enumerate(countryList):
    countryList[index] = countryCodes[val]

因为当您通过for i in countryList迭代列表时,i是另一个变量,当您将i分配给新值时,contryList的内容保持不变,您需要使用{ {1}}进行列表更改