我有一个字典,其中每个键都有一个字典作为其值(嵌套字典都有相同的键集)。我试图找到与子键上的两个条件相关联的键:给定另一个子键的子键的最大值为真。在
例如:
d = {'key1' : {'subkey1' : True, 'subkey2' : 4},
'key2' : {'subkey1' : True, 'subkey2' : 8},
'key3' : {'subkey1' : False, 'subkey2' : 1},
'key4' : {'subkey1' : False, 'subkey2' : 9} }
我希望结果是'key2',因为它是'subkey2'的最大值,其中'subkey1'为真。在
我的诱惑是将所有内容放入一个数组中并找到与这些值相关联的索引,但我的印象是,这可以在不添加更多变量来存储相同信息的情况下完成。我觉得可能有更好的方法,因为我对Python比较陌生。在
有什么建议吗?谢谢!在
您可能需要的是
reduce
来自functools
以下是您可能要寻找的解决方案:
基本上,这个
^{pr2}$reduce(operator.getitem, [k,'subkey1'], d)
所做的就是从子字典中获取值。例如:输出:
这里reduce遍历John>;Male,得到的结果是
True
我们也可以列出清单作为论据。看看这个
输出:
你不能总是期望这句名言是一句名言,它可以是一句名言,一句名言,一句名言。(谁知道?事情总会发生!)在
输出:
现在回到你的问题上来:
对于每个键}。仅在
k
,这将是您的key1,key2,...
等等。首先,reduce(operator.getitem, [k,'subkey1'], d)
检查其中包含的值是True
还是{True
时继续然后将maxsum设置为dict的sub-dict中的第二项。对于每个键,它都会被检查,如果发现另一个值大于当前值,则该值将被更改,否则它将继续。直到找到可以打印出来的最大值。在
这是问题的可选实现。在
首先,用True过滤所有的subkey1。在
其次,从过滤字典中找到subkey2中的最大值。在
这有点复杂,但是这个呢:
首先,我们列出一个主键列表,这些主键的subkey1为True,然后为每个主键重建一个键值对词典,并获取具有最大值的键
还没有完全测试这个,所以请在你的一端做,如果你认为值得的时间。在
相关问题 更多 >
编程相关推荐