Подтвердить что ты не робот

Как получить доступ к значению ключа словаря, присутствующего в списке?

Предположим, у меня есть следующий список:

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

Как мне получить доступ к определенному значению ключевого слова d?

4b9b3361

Ответ 1

Индексируйте список, затем dict.

print L[1]['d']

Ответ 2

Прежде всего, не используйте "список" в качестве имени переменной.

Если у вас есть простые словари с уникальными ключами, вы можете сделать следующее (обратите внимание, что будет создан новый объект словаря со всеми элементами из суб-словарей):

res  = {}
for line in listOfDicts:
   res.update(line)
res['d']
>>> 4

В противном случае:

getValues = lambda key,inputData: [subVal[key] for subVal in inputData if key in subVal]
getValues('d', listOfDicts)
>>> [4]

Или очень основа:

def get_value(listOfDicts, key):
    for subVal in listOfDicts:
        if key in subVal:
            return subVal[key]

Ответ 3

Вы не предоставили достаточно контекста для предоставления точного ответа (например, как вы хотите обрабатывать идентичные ключи в нескольких dicts?)

Один ответ заключается в повторении списка и попытке получить 'd'

mylist = [{'a': 1, 'b': 2}, {'c': 3, 'd': 4}, {'e': 5, 'f': 6}]
myvalues = [i['d'] for i in mylist if 'd' in i]

Другой ответ заключается в доступе к dict напрямую (по индексу списка), хотя вы должны знать, что этот ключ присутствует

mylist[1]['d']

Ответ 4

Если вы знаете, какой dict в списке есть ключ, который вы ищете, у вас уже есть решение (как представлено Мэттом и Игнасио). Однако, если вы не знаете, какой dict имеет этот ключ, вы можете сделать это:

def getValueOf(k, L):
    for d in L:
        if k in d:
            return d[k]