当键是Python中的字典中的元组时

时间:2014-02-17 15:46:30

标签: python dictionary tuples lowercase

我很难理解这一点。我有一个字典,其中键是由两个字符串组成的元组。我想小写这个元组中的第一个字符串,这可能吗?

3 个答案:

答案 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)

在将字符串放入元组之前,您必须将字符串更改为小写。元组在创建后是只读的。