2014-02-10 42 views
1

有沒有一種方法來定義一個二維數組/字典組合,其中第一個值是枚舉和第二個關聯?理想情況下,最終結果如下所示,其中第一個是簡單索引,第二個是鍵 - >值對。二維數組/字典組合

data[0]["Name"] = ... 

在此先感謝!

+5

所以'dict'的列表? – mhlester

回答

5

擴大我的意見,dictlist一個S:

>>> list_of_dicts = [{'first_name':'greg', 'last_name':'schlaepfer'}, 
...     {'first_name':'michael', 'last_name':'lester'}] 
>>> 
>>> list_of_dicts[0]['first_name'] 
'greg' 
+0

我只是想說,你用你最初的問題回答了我的問題 - 我只是不知道術語,但字典清單正是我所追求的 - 感謝這個例子和你的幫助! –

+1

請選擇一個正確的答案來結束該問題 –

+0

是的 - 它只是讓我等了10分鐘才能選擇你的答案。我不認爲我會在一分鐘內發佈答案! –

0

當然 - 字典列表:

>>> LoD=[{c:i for i,c in enumerate(li)} for li in ('abc','def','ghi')] 
>>> LoD 
[{'c': 2, 'b': 1, 'a': 0}, {'f': 2, 'e': 1, 'd': 0}, {'g': 0, 'i': 2, 'h': 1}] 
>>> LoD[2]['g'] 
0 
>>> LoD[2]['h'] 
1 

確保您使用的類型的字典上dict方法和list方法清單:

行:

>>> LoD[2]['new']='new value' 
>>> LoD 
[{'c': 2, 'b': 1, 'a': 0}, {'f': 2, 'e': 1, 'd': 0}, {'g': 0, 'new': 'new value', 'i': 2, 'h': 1}] 

>>> LoD.append({'new key':'new value'}) 
>>> LoD 
[{'c': 2, 'b': 1, 'a': 0}, {'f': 2, 'e': 1, 'd': 0}, {'g': 0, 'new': 'new value', 'i': 2, 'h': 1}, {'new key': 'new value'}] 

不走:

>>> LoD['new']='test' 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: list indices must be integers, not str 

>>> LoD[2].append('something') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'dict' object has no attribute 'append' 
0
dicts = [ {"name": "Tom", "age": 10 }, 
      {"name": "Tom", "age": 10 }, 
      {"name": "Tom", "age": 10 } ] 

print dicts[0]['name'] 

從本質上講,你會創建一個字典列表。正確答案爲mhlester作爲評論。