2015-10-05 124 views
3

是否有任何簡短而好的方法來修改python字典的所有鍵?修改Python字典鍵

for key in my_dict.keys(): 
    my_dict[my_modification(key)] = my_dict.pop(key) 

只要my_modification(key)卻沒有得到很好的my_dict原鑰匙的作品。否則,我會陷入困境。在我的問題中,密鑰都是整數-100 < key < 100,修改只是一個全局變化,所以最小的密鑰變爲零。

+0

你是否需要*在原地做?爲什麼不'new_dict = {my_modification(key):val for key,val in my_dict.items()}'? – jonrsharpe

+0

不是,那可行。但我想知道是否有更好的方法來做到這一點。 – Christian

+0

*「更好」*如何,確切地說? – jonrsharpe

回答

7

只需創建一個新的字典:

new_dict = {my_mod(key): my_dict[key] for key in my_dict} 
+0

加上'my_dict.clear()'和'my_dict.update(new_dict)',你就可以準確的知道OP的要求。 –

+1

我甚至可以對my_dict執行'my_dict = {my_mod(key):my_dict [key]}''我想。我只是覺得可能有更好的做法。 – Christian

1

試圖修改字典的按鍵內嵌總是蘊藏着覆蓋一些危險,因爲你已經注意到。相反,它會更容易,只需創建一個新:

my_modified_dict = \ 
{my_modification(key) : value for (key, value) in my_dict.iteritems()} 
+0

好吧,比這只是要走的路,沒有捷徑......謝謝! – Christian

1

我贊成建立一個新的字典其他答案建議,但你可以解決它的地方,如果你提取所有的按鍵和它們排序在原始字典中更換之前的顛倒順序

換句話說,如果您確保新舊鑰匙不混用,則可以進行替換,在您的情況下,可以在替換之前通過反向分揀鍵來處理替換。免責聲明:不確定你會以這種方式獲得任何東西,但它是安全可行的,你想要這樣做。