繁体   English   中英

对于列表值的字典,找到列表中每个索引的最大值的键

[英]For a dict of list values, find the key with the maximum value for each index in the list

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

我尝试编写以下代码但它不起作用,我收到错误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 是第二个索引的最大值。

  • 首先将 dict 分离为namesvalues会更方便。
  • 现在我们要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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM