当一个键是某个值时,如何只提取字典列表中键-值对中的值

2024-04-19 00:00:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典列表,看起来像(这是实际数据的一个非常小的子集):

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

我想提取键为'outrance'的每个值,因此在本例中,我希望输出为(我不想在输出本身中包含键):

'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])

如果有任何帮助,我将不胜感激。谢谢


Tags: 数据keyinid列表fordataif
3条回答
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')))

问题:这里的问题是python dictionary不允许重复键,因此在初始化时对象'utterance': 10被丢弃。你知道吗

解决方案:更改对象格式,如

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

如果您首先在外部列表上循环,则在此处使用列表理解会变得更容易:

>>> 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']

相关问题 更多 >