我有麻煩理解這一點。我有一本字典,其中的關鍵字是一個由兩個字符串組成的元組。我想小寫這個元組中的第一個字符串,這可能嗎?當鍵是Python中的字典中的元組時
回答
由於元組是不可變的,所以您需要刪除舊元件並創建一個新元件。這部作品在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()返回一個列表複製,所以它傳遞給列表是不必要的,但是我選擇了讓它與Python 3完全兼容。
您還可以使用發送到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}
Python 2說:「在字典中添加或刪除條目時使用iteritems()可能會引發RuntimeError或無法迭代所有條目。」 Python 3對'items()'表示同樣的效果,「在字典中添加或刪除條目時迭代視圖可能會引發'RuntimeError'或無法迭代所有條目。」 –
嗨,@SteveJessop,很好的接受,我測試了它,並且它在這種用例中工作正常,但我不想讓人們誤導其他用例,所以我按照您的建議按照安全的方向編輯它。 –
非常感謝你,這工作完美! – user2795095
在將字符串放入元組之前,您必須將字符串更改爲小寫字母。元組在創建後是隻讀的。
你可以隨時創建一個代表你想要更改的新字典 –
Okei,謝謝你的回答。我正在導入一個來自元組的來自brown的word-tagg語料庫,所以我沒有看到在把它放到字典中之前我怎麼能改變它... – user2795095
雖然,這與真的沒有多大關係元組是不可變的 - 問題是* string *是不可變的。 (改變'tuple'中的對象工作得很好)。 – mgilson
不幸的是,你必須創建一個新的密鑰。類似這樣的:
>>> key, value = ('SPAM', 'eggs'), 'potato'
>>> d = {key: value}
>>> print d
{('SPAM', 'eggs'): 'potato'}
>>> new_key = (key[0].lower(),) + key[1:]
>>> d[new_key] = d.pop(key)
>>> print d
{('spam', 'eggs'): 'potato'}
您可以使用字典解析來建立一個新的字典與應用更改:
d = { (a.lower(), b) : v for (a,b), v in d.items() }
「修改」可能是錯誤的詞。這是一個新的'dict'分配給原來的名字。如果本地名稱是唯一的參考,那應該沒問題。 –
@StevenRumbalski:通過「修改」這裏我的意思是應用一個純函數(因此舊值仍然保留)。同意它與突變的意義相沖突。你認爲什麼是更好的術語? –
我只是使用「新」。 –
- 1. 在python中使用元組作爲字典中的字典鍵
- 2. Python中的元組鍵在字典中無法取得
- 3. 當鍵是一個元組時訪問字典值
- 4. python中的字典鍵
- 5. Python 2中無法獲得的鍵和值(字典和元組)
- 6. 將數組元素與Python中的字典鍵匹配
- 7. 在Python中使用元組作爲字典鍵的缺點?
- 8. 字典與元組的Python
- 9. 保存字典的關鍵是元組與json,python
- 10. 從元組創建字典,用Python中的元組變量名作爲鍵
- 11. Oneline Python中的字典數組字典
- 12. 比較字典鍵的元組元素
- 13. Python中的KeyError當從字典中刪除一個鍵時,但存在鍵
- 14. 以元組爲關鍵字的字典
- 15. Python中的數組/字典
- 16. 當值不是唯一的時,在python字典中轉置值和鍵
- 17. Python字典麻煩:按元組中的元素分組
- 18. 在Python中使用元組作爲字典鍵
- 19. 用Python中的字典中的字典鍵排序
- 20. 詞典是一個字典中的關鍵Python
- 21. Python:當列表是元組中元素時的列表操作
- 22. 替換Python字典中的鍵的值?
- 23. 比較元組/字典python
- 24. 只選擇元組的字典鍵?
- 25. 當其中一個元素是Python字典時,向MySQL表中插入一行
- 26. Python:從一個嵌套列表中的多個值的元組鍵的字典
- 27. Python的 - 由元組值順序進行排序的元組鍵控字典
- 28. 字典中的鍵是Python中的整數對
- 29. 是Python中的Dict.get用來比較字典中的鍵嗎?
- 30. django打印元組鍵鍵盤字典
一旦你創建的元組,你可以」不要改變它,所以你在創建元組之前先檢查一下。 –
@ user2795095,是你想修復舊字典中的鍵的一個約束,因爲你似乎暗示了這一點。 –