2015-11-18 74 views
-1
list1:[ 
    {"name": "Tom", "age": 10}, 
    {"name": "Mark", "age": 5}, 
    {"name": "Pam", "age": 7} 
     ] 

我想訪問第二個字典。我曾嘗試過給鑰匙。Python:訪問字典列表中的特定字典

next(item for item in dicts if item["name"] == "Mark") 

但我沒有鑰匙。我想在第二部字典的幫助下做一些操作。任何人都可以幫忙嗎?' 在這裏,我想訪問每個字典沒有索引&做一些操作,每個字典&移動到下一個字典做操作爲下一個字典&等。有什麼辦法嗎?

+0

什麼建議嗎? – parker

+0

[如何訪問列表中存在的字典鍵值?](http://stackoverflow.com/questions/6521892/how-to-access-a-dictionary-key-value-present-inside-a -list) – skrrgwasme

+0

我已經低估了你的問題,因爲我認爲它不會爲未來的訪問者提供很多價值,並顯示很少的研究工作。訪問列表和詞典中的項目在無數的Python教程中都有詳細記錄,並且已經有多個SO問題提供變體示例。 – skrrgwasme

回答

2

由於list1dictionary一個list因此使用列表索引(此情況下0-2)嘗試訪問辭書 -

>>>print list1[1]["name"] 
>>>Mark 
>>>lsit1[1]["name"] = 'Blah' 
>>>lsit1 
>>>[{'age': 10, 'name': 'Tom'}, {'age': 5, 'name': 'Blah'}, {'age': 7, 'name': 'Pam'}] 
>>>del lsit1[1]['name'] #Delete a key 
>>>lsit1 
>>>[{'age': 10, 'name': 'Tom'}, {'age': 5}, {'age': 7, 'name': 'Pam'}] 
>>>lsit1[1]['new_name']='Test' #Add a key 
>>>lsit1 
>>>[{'age': 10, 'name': 'Tom'}, {'new_name': 'Test', 'age': 5}, {'age': 7, 'name': 'Pam'}] 

編輯 -

它看起來你的數據是json兼容然後試試json模塊 -

>>>import json 
>>>#use json.loads and dumps to format data as below 
>>>data = {'list1':[{"name":"Tom","age":10},{"name":"Mark","age":5},{"name":"Pam","age":7}]} 
>>>data['list1'][1] 
>>>{'age': 5, 'name': 'Mark'} 
+0

我需要整個字典,如:{「name」:「Mark」,「age」:5} – parker

+0

'print lsit1 [1]' – SIslam

+0

我不能使用直接索引。我會被硬編碼。任何其他技巧? – parker

0

只需使用indexing即可。

In [134]: list1[1]['name'] 
Out[134]: 'Mark' 

對於第二dict

In [137]: l[1] 
Out[137]: {'age': 5, 'name': 'Mark'} 

通過for迴路以及用於訪問在list第二項解決。

In [139]: for k, v in enumerate(l): 
    if k==1: 
     print v 
    .....:   
{'age': 5, 'name': 'Mark'} 
+0

任何建議使用循環? – parker

+0

爲什麼當你有更好的方法時你需要'for'循環。 –

+0

我需要循環,因爲我不知道鑰匙和所有 – parker

0

您可以使用此:使用循環

list1[1]["name"]="some thing"