2015-01-12 123 views
1

我想要一本字典的按鍵使用此代碼被串到整數轉換:更改字典鍵爲整數

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} 

誰能告訴我什麼我d錯了嗎?

感謝

+0

'key',正是因爲錯誤說。也許你想'在b:newkey = int(key)b [newkey] = b [key]'中鍵入? –

回答

5

在這段代碼

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()}