2012-01-18 91 views
1

剛開始使用python,試圖嵌套在其他數據結構,列表,集等內部的字典當我嵌套字典(如,如果我創建一個字典列表),我似乎不能參考單個字符中的鍵或值已經不再。這是一個設計功能,還是我完全剔骨呢?初學Python問題

+1

對於'basic'標籤的創新使用+1。 – Azodious 2012-01-18 05:33:31

+1

歡迎來到SO!請在您的帖子中加入一些代碼,包括您嘗試過的內容以及遇到的錯誤,以便我們提供幫助。你會得到更好的答案。 – 2012-01-18 05:34:15

+0

可以訪問嵌套的字典(或其他對象)。如果你在命令行中使用它,你可以弄清楚它。祝你好運! – monkut 2012-01-18 05:40:42

回答

4

你絕對可以用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' 
+0

有史以來最快,最驚人的答案。這是完美的,它是一種教育。非常感謝。 – 2012-01-18 05:52:05

+0

從技術上講,字典鍵必須是* hashable *,而不是* immutable *。例如,如果你繼承'list'並添加'__hash__'方法,你將能夠使用它的實例作爲代碼鍵。 – yak 2012-01-18 06:21:43

+0

@billbixby:歡迎來到StackOverflow。 「非常感謝」最好是[「通過點擊答案左側的複選框大綱」](http://stackoverflow.com/faq#howtoask)表示。 – Johnsyweb 2012-02-04 21:28:19

2

當你嵌套類型的字典(或嵌套爲此事的任何東西),你必須在外部列表中提供所需字典的索引,然後提供所需項目的索引。所以,如果你在列表中有幾個類型的字典:

list_of_dicts = [{'a':1,'b':2,'c':3},{'d':4,'e':5,'f':6}] 

訪問元素第二字典的「E」,則輸入:list_of_dicts[1]['e']

0
x = [{"a":1},{"b":2}] 
>>> x[1]["b"] 
2 
1

觸及的幾件事情:

  1. 添加一個字典到列表。

    mylist = []

    mylist.append({'key1': 'val1'})

  2. 添加列表的一組。

    myset = set()

    myset.add({'key1': 'val1'}) # Error - dicts are mutable, therefore not hashable.

  3. 飼養軌道不同的字典。

    mydicts = set([id(d) for d in mylist])

  4. 檢索的元素。

    # With Lists

    mylist[0]['key1']

    # With Sets

    mydicts[0] # Error - sets do not support indexing.

-1

我已經不止一次因爲我一直忘了如何做到這一點,但一段時間後,遇到這個問題,我記得。
你在找什麼可能是索引[]。索引從0開始,並從列表的長度開始。
代碼應該看起來像這樣:
print list_name[0]
打印功能不是必需的。括號中的0是索引#。您可以將其更改爲任何您想要的號碼。我正在使用循環比它應該看起來更像這樣:
for i in range(10): print list_name[i]
再次打印功能是不必要的,你可以更改range(10)爲任何你想要的。

希望這會有所幫助!