首页 > 解决方案 > 对于列表值的字典,找到列表中每个索引的最大值的键

问题描述

我有一个带有几个名称作为键的字典,每个名称都有一个带有一些数字的列表的值。我想获取列表值的每个索引的最大值的名称(键)。

我尝试编写以下代码,但它不起作用,我得到错误AttributeError: 'str' object has no attribute 'keys',我不知道为什么。

这是代码:

from Scheduler import Scheduler

class MaxSNR(Scheduler):
    def allocuteUR(self, mapMobileMkn, tailleFrequence=1):
        mapUniteResource = ["NonAllouer" for x in range(tailleFrequence)]
        mknMax = max(mapMobileMkn, key=mapMobileMkn.get)
        return mknMax

if __name__ == "__main__":
    m = MaxSNR()
    
    mapUniteResource = m.allocuteUR({'patrick': [40, 5], 'michel': [8, 3], 'edgard': [1, 10]}, tailleFrequence=2)
    for key in mapUniteResource.keys:
        nombre = MaxSNR(mapUniteResource)
        print(nombre)

对于上面的示例,我希望输出为:

patrick
edgard

因为40是第一个索引的最大值,10是第二个索引的最大值。

标签: python

解决方案


  • 首先将 dict 分隔为namesand会更方便values
  • 现在我们想要zip这些值以迭代索引匹配项。
  • 现在我们需要找到最大值的索引,所以我们可以取它的匹配名称。
d = {'patrick': [40, 5], 'michel': [8, 3], 'edgard': [1, 10]}
names, values = zip(*d.items())
for column in zip(*values):
    index = max(range(len(column)), key=lambda i: column[i])
    print(index, names[index])

会给:

0 patrick
2 edgard

推荐阅读