剛開始使用python,試圖嵌套在其他數據結構,列表,集等內部的字典當我嵌套字典(如,如果我創建一個字典列表),我似乎不能參考單個字符中的鍵或值已經不再。這是一個設計功能,還是我完全剔骨呢?初學Python問題
回答
你絕對可以用Python做到這一點。您可以多次使用[]
運營商 - 如果a
是一個列表,那麼a[0]
是它的第一個元素。如果第一個元素碰巧是字典,那麼你可以看到它的關鍵字a[0].keys()
,你可以像這樣得到它的值:a[0]["here's a key"]
就像你會循環這樣的字典的鍵:
for key in my_dict:
# get the value
val = my_dict[key]
# do something with it
您可以使用一個列表的元素,如果它正好是一個字典:
for key in a[0]:
# get the value
val = a[0][key]
# do something with it
你可以列出清單,http://stardict.sourceforge.net/Dictionaries.php下載列表,甚至http://stardict.sourceforge.net/Dictionaries.php下載其中的值列表(或更多的字典),很容易。並且要引用它們,您可以遍歷它們的值,或根據需要鏈接[]
操作。
關於你唯一不能做的事情就是使用列表或字典作爲鍵到另一個字典。其中規則是字典鍵必須是不可變的。數字是可以的,字符串是可以的,元組是可以的,但是列表和字典不是。
下面是互動的代碼示例,向您展示如何建立http://stardict.sourceforge.net/Dictionaries.php下載列表,然後再提取其值:
# Here's a dictionary
a = { 'key1': 'value1', 'key2': 2 }
# Check it out
>>> type(a)
<type 'dict'>
# Print it:
>>> a
{'key1': 'value1', 'key2': 2}
# Look inside
>>> a['key1']
'value1'
# Here's another one
b = { 'abc': 123, 'def': 456 }
# Now let's make a list of them
c = [a, b]
# Check that out, too
>>> type(c)
<type 'list'>
# Print it:
>>> c
[{'key1': 'value1', 'key2': 2}, {'def': 456, 'abc': 123}]
>>> c[0]
{'key1': 'value1', 'key2': 2}
# Dig deeper
>>> c[0]['key1']
'value1'
有史以來最快,最驚人的答案。這是完美的,它是一種教育。非常感謝。 – 2012-01-18 05:52:05
從技術上講,字典鍵必須是* hashable *,而不是* immutable *。例如,如果你繼承'list'並添加'__hash__'方法,你將能夠使用它的實例作爲代碼鍵。 – yak 2012-01-18 06:21:43
@billbixby:歡迎來到StackOverflow。 「非常感謝」最好是[「通過點擊答案左側的複選框大綱」](http://stackoverflow.com/faq#howtoask)表示。 – Johnsyweb 2012-02-04 21:28:19
當你嵌套類型的字典(或嵌套爲此事的任何東西),你必須在外部列表中提供所需字典的索引,然後提供所需項目的索引。所以,如果你在列表中有幾個類型的字典:
list_of_dicts = [{'a':1,'b':2,'c':3},{'d':4,'e':5,'f':6}]
訪問元素第二字典的「E」,則輸入:list_of_dicts[1]['e']
x = [{"a":1},{"b":2}]
>>> x[1]["b"]
2
觸及的幾件事情:
添加一個字典到列表。
mylist = []
mylist.append({'key1': 'val1'})
添加列表的一組。
myset = set()
myset.add({'key1': 'val1'}) # Error - dicts are mutable, therefore not hashable.
飼養軌道不同的字典。
mydicts = set([id(d) for d in mylist])
檢索的元素。
# With Lists
mylist[0]['key1']
# With Sets
mydicts[0] # Error - sets do not support indexing.
我已經不止一次因爲我一直忘了如何做到這一點,但一段時間後,遇到這個問題,我記得。
你在找什麼可能是索引[]
。索引從0開始,並從列表的長度開始。
代碼應該看起來像這樣:
print list_name[0]
打印功能不是必需的。括號中的0是索引#。您可以將其更改爲任何您想要的號碼。我正在使用循環比它應該看起來更像這樣:
for i in range(10): print list_name[i]
再次打印功能是不必要的,你可以更改range(10)
爲任何你想要的。
希望這會有所幫助!
- 1. time.localtime()問題初學者python
- 2. 初學者的Python線程問題
- 3. 關於python multiprocessing的初學者問題?
- 4. Python的初學者問題 - 字典
- 5. Python問題 - 地圖和類 - 初學者
- 6. 初學者Python網絡湊問題
- 7. 初學jquery問題
- 8. 初學Java問題
- 9. C#初學問題
- 10. - 初學者問題
- 11. 初學jQuery問題
- 12. 初學C++問題
- 13. 初學javascript問題
- 14. 初學SQL問題
- 15. 初學jQuery問題(FF/IE問題)
- 16. Node.js初學者問題
- 17. 初學者的TextMate問題
- 18. 初學C指針問題
- 19. 初學java程序問題
- 20. JSF/JSP - 初學者問題
- 21. 硒初學者問題
- 22. 初學xcode/iphone webservices問題
- 23. FreePascal初學者問題
- 24. 初學者PHP/mySQL問題
- 25. Android UI初學者問題
- 26. android:layout_weight初學者問題
- 27. 初學者合金問題
- 28. Zend Sessions問題(初學者)
- 29. SQL oracle初學者問題
- 30. C++初學者問題
對於'basic'標籤的創新使用+1。 – Azodious 2012-01-18 05:33:31
歡迎來到SO!請在您的帖子中加入一些代碼,包括您嘗試過的內容以及遇到的錯誤,以便我們提供幫助。你會得到更好的答案。 – 2012-01-18 05:34:15
可以訪問嵌套的字典(或其他對象)。如果你在命令行中使用它,你可以弄清楚它。祝你好運! – monkut 2012-01-18 05:40:42