我很难理解这一点。我有一个字典,其中键是由两个字符串组成的元组。我想小写这个元组中的第一个字符串,这可能吗?
答案 0 :(得分:4)
您可以使用dict理解来构建一个应用了更改的新dict:
d = { (a.lower(), b) : v for (a,b), v in d.items() }
答案 1 :(得分:3)
由于元组是不可变的,因此您需要删除旧元组并创建一个新元组。这适用于Python 2和3,它保留了原始字典:
>>> 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}
注意,在Python 2中,dict.items()返回一个列表副本,因此不需要将它传递给list,但我选择保留它以与Python 3完全兼容。
您还可以使用提供给dict
的生成器语句,并让旧的dict收集垃圾。这也与Python 2.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}
答案 2 :(得分:0)
在将字符串放入元组之前,您必须将字符串更改为小写。元组在创建后是只读的。