将字典键从字符串更改为整数

4

我试图使用以下代码将字典的键从字符串转换为整数:

b = {"1":0,"2":0,"3":0,"4":0,"5":0}

for newkey in b:
        newkey[key] = int(newkey[key])
print b   

然而,这仍然会产生以下错误:
Traceback (most recent call last):
  File "C:\Python27\counter2", line 22, in <module>
    newkey[key] = int(newkey[key])
NameError: name 'key' is not defined

我希望最终输出的结果看起来像这样:

b = {1:0,2:0,3:0,4:0,5:0}

有人能告诉我我做错了什么吗?

谢谢


你从未定义过 key,就像错误提示所说的那样。也许你想要这样写 for key in b: newkey = int(key) b[newkey] = b[key] - Marc B
3个回答

9
在这段代码中,
for newkey in b:
        newkey[key] = int(newkey[key])

key 以前从未被定义过。也许你想说的是 newkey?相反,可以使用字典推导式重新构建字典,像这样:

>>> b = {"1": 0, "2": 0, "3": 0, "4": 0, "5": 0}
>>> {int(key):b[key] for key in b}
{1: 0, 2: 0, 3: 0, 4: 0, 5: 0}

或者你可以使用dict.iteritems(),像这样:

>>> {int(key): value for key, value in b.iteritems()}
{1: 0, 2: 0, 3: 0, 4: 0, 5: 0}

1

你没有定义 key

你可以这样做:

new_b = {int(old_key): val for old_key, val in b.items()}
# int(old_key) will be the key in the new list

0

由于您正在循环字典b,您可能想要执行以下操作

for newkey in b:
    b[newkey] = int(b[newkey])
print b 

但这根本没有意义,它改变的是“值”,而不是“键”。

你也许想要做这个:

b = {int(key):value for key, value in b.items()}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接