2015-10-05 123 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

我赞成建立一个新的字典其他答案建议,但你可以解决它的地方,如果你提取所有的按键和它们排序在原始字典中更换之前的颠倒顺序

换句话说,如果您确保新旧钥匙不混用,则可以进行替换,在您的情况下,可以在替换之前通过反向分拣键来处理替换。免责声明:不确定你会以这种方式获得任何东西,但它是安全可行的,你想要这样做。