簡體   English   中英

當鍵是 Python 中字典中的元組時

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM