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

2024-07-02 14:35:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个dict,其中有几个名字作为键,每个名字都有一个列表值和一些数字。我想获得列表值的每个索引的最大值的名称(键)

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


Tags: key代码in列表forkeys名字scheduler
1条回答
网友
1楼 · 发布于 2024-07-02 14:35:27
  • 首先将dict分隔为namesvalues会更方便
  • 现在我们想要^{}这些值,以便在索引匹配项上迭代
  • 现在我们需要找到最大值的索引,这样我们就可以得到它的匹配名称
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

相关问题 更多 >