【问题标题】:how to access key inside dict inside list inside dict如何在字典内的列表内访问字典内的键
【发布时间】:2021-09-04 15:09:05
【问题描述】:
Cafe = {"people": [{"name": "Bob", "drink": "Coffee"}, 
                   {"name": "Ben", "drink": "Tea"}]}

我想打印所有"name"print(Cafe["people"]["name"]) 似乎不起作用。

【问题讨论】:

  • 试试:Cafe["people"][0]["name"]Cafe["people"][1]["name"],因为它是一个数组。
  • 如果你想用循环打印名字,试试print([people["name"] for people in Cafe[people]])

标签: python list dictionary nested


【解决方案1】:
print(Cafe["people"][0]["name"])

获取第一人称。

for d in Cafe["people"]:
    print(d["name"])

遍历每个人并打印他们的名字。

【讨论】:

    【解决方案2】:

    试试这个 -

    Cafe = { "people": [ {"name": "Bob", "drink": "Coffee"}, {"name": "Ben", "drink": "Tea" } ] }
    
    names = []
    for ele in Cafe['people']:
        names.append(ele['name'])
    

    或者更好地使用列表推导(可读性更强,速度更快)-

    names = [ele['name'] for ele in Cafe['people']]
    

    结果:

    print(names) # ['Bob', 'Ben']
    

    【讨论】:

      【解决方案3】:
      cafe = {'people': [{'name': 'Bob', 'drink': 'Coffee'}, {'name': 'Ben', 'drink': 'Tea'}]}
      

      使用get() 而不是密钥查找 - 例如:cafe['people'] - 如果您有任何理由相信您可能正在处理可能缺少目标密钥的数据,则可能会更安全。如果项目缺少键,get() 将返回 None,而不是抛出 KeyError,并且您还可以选择为任何缺失值提供默认值。

      names = [person.get('name') for person in cafe.get('people')]
      

      在解压缩未知数量名称的列表推导时格式化输出的一种方法示例。

      print(str('{}\n'*len(names)).format(*names))
      

      输出:

      Bob
      Ben
      

      通过提供默认值处理缺失键的示例:

      cafe = {'people': [{'name': 'Bob', 'drink': 'Coffee'}, {'name': 'Ben', 'drink': 'Tea'}, {'drink': 'Soda'}]}
      names = [person.get('name', 'Customer') for person in cafe.get('people')]
      print(str('{}\n'*len(names)).format(*names))
      

      输出:

      Bob
      Ben
      Customer
      

      【讨论】:

        猜你喜欢
        • 2022-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多