Как извлечь значение только в паре ключ-значение в списке словарей, когда ключом является определенное значение - PullRequest
0 голосов
/ 25 мая 2019

У меня есть список словарей, который выглядит примерно так (это очень маленькое подмножество фактических данных):

[{'utterance': 10,'id': 'output454', 'utterance': 'this is nice'}]

Я хочу извлечь каждое значение, где ключом является «высказывание», поэтому в этом примере я хотел бы, чтобы вывод был (я не хочу включать ключ в сам вывод):

'this is nice'

Я попытался сделать несколько вещей, ни одна из которых не сработала (ни одна из приведенных ниже не сработала):

[key for key, val in data.items() if key== "'utterance'"]

for k, v in data.iteritems():
    if k == '"utterance":':
        print(data[k])

Буду признателен за любую помощь. Спасибо

Ответы [ 4 ]

1 голос
/ 25 мая 2019

Использование понимания списка здесь становится проще, если вы сначала зациклите внешний список:

>>> mylist = [{'utterance': 10,'id': 'output454', 'utterance': 'this is nice'}]
>>> values = []
>>> for dictionary in mylist:
...     values.extend([v for k, v in dictionary.items() if k == 'utterance'])
... 
>>> values
['this is nice']
0 голосов
/ 25 мая 2019

Ключи в словаре Python должны быть уникальными, т. Е. Нельзя иметь дублированные ключи в словаре Python.

Однако, если вы хотите, чтобы ключ хранил несколько значений, вы можете использовать defaultdict .

Например,

from collection import defaultdict
d = defaultdict(list)
d = {'utterance': [10, 'this is nice'],'id': ['output454']}
print(d.get('utterance', None))
0 голосов
/ 25 мая 2019

Проблема : Проблема здесь в том, что python dictionary не позволяет дублировать ключи, поэтому объект 'utterance': 10 отбрасывается во время инициализации.

Решение : измените формат объекта на

data = [{
    'utterance': [10,'this is nice'],
    'id': 'output454'
}]
0 голосов
/ 25 мая 2019
data = [{'utterance': 10,'id': 'output454', 'utterance': 'this is nice'}]
for elem in data:
    print('{}'.format(data[elem].get('utterance')))

или, если только один элемент в списке ..

data = [{'utterance': 10,'id': 'output454', 'utterance': 'this is nice'}]
print('{}'.format(data[0].get('utterance')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...