[英]When the key is a tuple in dictionary in Python
我很難理解這一點。 我有一本字典,其中的鍵是一個由兩個字符串組成的元組。 我想小寫這個元組中的第一個字符串,這可能嗎?
您可以使用dict理解來構建一個應用了更改的新dict:
d = { (a.lower(), b) : v for (a,b), v in d.items() }
由於元組是不可變的,因此您需要刪除舊元組並創建一個新元組。 這適用於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}
在將字符串放入元組之前,您必須將字符串更改為小寫。 創建元組后,它們是只讀的。
元組是“不可變的”,這意味着您不能在創建元組后就地更改它。 但是,您可以通過修改現有元組來創建新元組。 我使用了“不可變”這個詞,因為那是 Pythonic 的詞,比“只讀”更好。
列表是可變的。 有趣的是,字符串是不可變的,但這很少會導致任何問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.