我很难理解这件事。我有一本字典,其中的键是由两个字符串组成的元组。我想用小写这个元组中的第一个字符串,这可能吗?
发布于 2014-02-17 15:53:11
因为元组是不可变的,所以您需要删除旧的元组并创建一个新的元组。这在Python 2和3中有效,它保留了原始的dict:
>>> d = {('Foo', 0): 0, ('Bar', 0): 0}
>>> for (k, j), v in list(d.items()): # list key-value pairs for safe iteration
... del d[k,j] # remove the old key (and value)
... d[(k.lower(), j)] = v # set the new key-value pair
...
>>> d
{('foo', 0): 0, ('bar', 0): 0}注意,在Python2中,dict.items()返回一个列表副本,因此没有必要将它传递给list,但是为了与Python3完全兼容,我选择保留它。
您还可以使用一个提供给dict的生成器语句,并让旧的dict得到垃圾收集。这也与Python2.7、2.6和3兼容。
>>> d = {('Foo', 0): 0, ('Bar', 0): 0}
>>> d = dict(((k.lower(), j), v) for (k, j), v in d.items())
>>> d
{('bar', 0): 0, ('foo', 0): 0}发布于 2014-02-17 16:00:24
您可以使用dict理解来构建一个新的dict,并应用您的更改:
d = { (a.lower(), b) : v for (a,b), v in d.items() }发布于 2014-02-17 15:49:45
在将字符串放入元组之前,必须将字符串更改为小写。元组在创建之后是只读的。
https://stackoverflow.com/questions/21833383
复制相似问题