嵌套Dict Python获取键和最大值

时间:2016-03-25 05:20:31

标签: python

我有这样的事情

d = { address { 'Avenue' : 3000,
                'Street' : 3000,
                'road' : 4000},
      movieprice {
                  'panda' : 40,
                   'fastandfurious' : 30,
                   'starwars': 50}}

我想要把这样的东西拿出来

address Avenue,Street,road 4000 ---> last Column should max of values max(3000,3000,4000)
movie panda,fastandfurious,starwars 50 --> max of value.

任何帮助表示感谢。

5 个答案:

答案 0 :(得分:1)

这个怎么样(假设我们修复你的字典):

d = {'address': {'Avenue': 3000,
                 'Street': 3000,
                 'road': 4000},
     'movieprice': {'panda': 40,
                    'fastandfurious': 30,
                    'starwars': 50}}

for k, nested in d.items():
    print("%s %s, %d" % (k, ', '.join(nested.keys()), max(nested.values())))

打印:

address Street, road, Avenue, 4000
movieprice panda, fastandfurious, starwars, 50

答案 1 :(得分:0)

要查找字典的最大值,您可以

d = some_dictionary
max(d.values())

这会给你最大的价值。至于找到具有该最大值的键,您必须遍历字典键并对max(d.values())进行测试,因为多个键可以具有相同的值。所以它就是这样的

d = some_dictionary
max_value_keys = [d[x] for x in d.keys if d[x] == max(d.values())]

答案 2 :(得分:0)

首先,您需要使字典有效。如果您将其嵌套在另一个字典中,则必须将每个字典定义为键值对的值。这是正确的代码:

d = { 'address' : { 'Avenue' : 3000,
            'Street' : 3000,
            'road' : 4000},
      'movieprice' : {
              'panda' : 40,
               'fastandfurious' : 30,
               'starwars': 50}}

从那里,你可以使用Bah的解决方案来遍历字典并打印他们的密钥及其最大值。

答案 3 :(得分:0)

对字典进行排序并打印值

import operator
d = {} # your nested dictonary
for k, nested in d.items():
    print k, ",".join([item[0] for item in sorted(nested.items(), key=operator.itemgetter(0))]), max(nested.values())

输出:

movieprice fastandfurious,panda,starwars 50
address Avenue,Street,road 4000

答案 4 :(得分:0)

尝试以下方法:

for i in d:
    print i, ','.join(d[i].keys()), max(d[i].values())
>>> for i in d:
...     print i, ','.join(d[i].keys()), max(d[i].values())
... 
movieprice starwars,panda,fastandfurious 50
address Street,Avenue,road 4000
>>>