【问题标题】:Get value inside of nested dict in python在python中获取嵌套dict内部的值
【发布时间】:2021-01-20 20:08:51
【问题描述】:

我如何获得性别值?

日期时间键可能不同,所以无论键名是什么,我都希望能够访问它。

{'data': {'2021-01-20 01:14:47 UTC': {'gender': 2, 'goodHost': 0, }}}

【问题讨论】:

  • 请发布您迄今为止尝试过的所有内容。
  • 日期时间键是字符串还是日期时间对象?整个字典的结构都会这样吗?
  • @Sayse That other question has known keys.
  • @Sayse 我不确定这个骗局是否准确。这里的问题不是嵌套,而是密钥非常随意(这似乎是一个非常糟糕的设计决策)
  • 这能回答你的问题吗? Dictionary get value without knowing the key

标签: python python-3.x


【解决方案1】:

如果您可以保证只有一个日期时间键,您可以执行以下操作:

data = my_dict['data']
item = list(data.values())[0]
print(item['gender'])

基本上,my_dict['data'].values() 将返回嵌套字典中的所有值,而不关心键是什么。如果你知道只有一个这样的项目,你可以直接去那里。

如果您可能有多个键,您可以遍历这些值并查找具有 gender 键的值:

for value in my_dict["data"].values():
    try:
        print(value["gender"])
    except KeyError:
        print("Didn't have a gender key so I'm skipping it.")

【讨论】:

  • 有很多日期时间键:/ 这里有一个例子,有 2 {''data': {'2021-01-20 01:14:47 UTC': {'gender': 2, 'goodHost ': 0, }, '2021-01-20 01:19:11 UTC': { 'gender': 1, 'goodHost': 0,}}}
  • 我会跳过list(...),而只是迭代items/values
  • 请参阅该答案的后半部分,了解如果有多个日期时间键它可能如何工作。就像@DeepSpace 说的那样,在这种情况下,您需要迭代这些值,而不是严格查看第一个值。
【解决方案2】:

只取第一个=唯一的值。

>>> next(iter(d['data'].values()))['gender']
2

【讨论】:

    猜你喜欢
    • 2020-07-22
    • 2014-04-01
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多