【问题标题】:Python - How do I return a dict key according to value in nested dict?Python - 如何根据嵌套字典中的值返回字典键?
【发布时间】:2019-06-26 06:17:50
【问题描述】:

我有一本 Python 字典。

我想要一种方法来遍历 dict 的每个 dict,检查每个字典中 'val' 键的值,然后返回 'val' == 0 的初始字典键。

dict = {
    1: {'x': 'a', 'val': 1},
    2: {'x': 'b', 'val': 1},
    3: {'x': 'c', 'val': 0},
    4: {'x': 'c', 'val': 0}
}

我尝试了以下方法,但只返回 3 和 4。

for itemid, iteminfo in data.items():
    for key in iteminfo:
        if iteminfo[key] == 0:
            print(str(itemid))

在上面的示例中,我希望返回 3,因为它是 'val' == 0 的第一个实例。

【问题讨论】:

  • 你自己试过了吗?
  • 您能分享您为解决问题而编写的代码吗?
  • "这是 'val' == 0 的第一个实例":不,字典没有排序。
  • 您的意思是orderedDict,因为dict 通常没有排序
  • @DataPlankton 发布您尝试过的任何内容。除非我们知道您要去哪里,否则我们无能为力。这也可能有助于stackoverflow.com/questions/34305003/…

标签: python python-3.x dictionary iterator


【解决方案1】:

如果您只希望第一次出现的 'val' 与 0 配对(没有任何特定顺序,因为 python 中的 dicts 没有排序),您可以在循环中使用带有条件语句的 break:

mydict = {
    1: {'x': 'a', 'val': 1},
    2: {'x': 'b', 'val': 1},
    3: {'x': 'c', 'val': 0},
    4: {'x': 'c', 'val': 0}
}

for key, value in mydict.items():
    if value['val'] == 0:
        print(key)
        break

如果顺序很重要,你可以使用有序的字典

【讨论】:

  • 非常感谢。我很感激。了解 - 需要使用有序字典。
  • 我已经在上面的问题中发布了它。我的错。
  • 太好了!这使人们更容易回答您的问题。
猜你喜欢
  • 2020-10-20
  • 2012-05-14
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
相关资源
最近更新 更多