2015-11-18 2 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

Поскольку list1 является list из dictionary так пытаются словарях доступа, используя список индексов (в этом случае 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'}] 

Edit-

Это выглядит ваши данные json совместимый, затем попробуйте json module-

>>>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" 
Смежные вопросы