Python访问字典列表中的字典

11

嗨,我有一个包含列表值的字典,并且在列表中有一个字典。有没有办法使用键而不是列表索引调用列表内的字典值?列表内的字典可能会变化,因此索引值可能无法始终提供正确的键值对。但是如果我能够使用键,我就可以始终获取正确的值。

mylist = {'mydict': [{'A': 'Letter A'}, {'B': 'Letter C'}, {'C': 'Letter C'}]}
print(mylist['mydict'][0]['A'])

当前输出:

Letter A

所需查询:

print(mylist['mydict']['A'])
Letter A

为什么不直接使用字典的字典呢? - bphi
1
你不能在不改变对象结构的情况下更改所需查询的结果。使用当前的结构,查询将始终引发错误。 - Ma0
1
看起来你应该这样做 mydicts = {k: dict(v) for k, v in mylist.items()} 然后你就可以使用这个结构 mydicts['mydict']['A'] - Jon Clements
5个回答

11

目前您在一个字典里面的列表中有3个字典。请尝试使用以下方式:

my_nested_dictionary = {'mydict': {'A': 'Letter A', 'B': 'Letter C', 'C': 'Letter C'}}
print(my_nested_dictionary['mydict']['A'])

我遍历了数据来创建这个列表,并使用 .append({key: value}) 来创建带有字典的列表。让我看看是否可以像这样格式化它。这很有帮助,谢谢。 - MBasith
1
在这种情况下,您可以初始化 mylist = {'mydict': {}} 并使用 for 循环遍历 keyvalue,然后将 mylist['mydict'][key] = value - M3RS

4

看一下下面的代码:

mylist = {'mydict': [{'A': 'Letter A'}, {'B': 'Letter C'}, {'C': 'Letter C'}]}

for dictionary in mylist['mydict']:
   try:
      print(dictionary['A'])
   except KeyError:
      pass

'Letter A'

你在列表中遍历字典,然后尝试调用键 A。你捕获 KeyError,因为字典中可能缺少该键。

3
尝试使用以下代码生成新的字典。
mylist = {'mydict': [{'A': 'Letter A'}, {'B': 'Letter C'}, {'C': 'Letter C'}]}
newDict={}
for item in mylist['mydict']:
    newDict.update(item)
mylist['mydict']=newDict
print(mylist['mydict']['A'])

1
如何使用生成器?
item = next(item['A'] for item in mylist['mydict'] if 'A' in item)

0

只有在您的原始数据格式化为以下格式时,才能实现此操作:

mylist = {'mydict': {'A': 'Letter A','B': 'Letter C','C': 'Letter C'}}

所以没有嵌入式列表 - 似乎也不会增加有意义的结构?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接