我有两个项目:国家/地区代码列表为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]
即使我设置了列表中的每个元素并通过打印来验证它已被更改,但当我整体打印列表时,更改无法继续进行。我能做错什么?
答案 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}}进行列表更改