python - 对于列表值的字典,找到列表中每个索引的最大值的键
问题描述
我有一个带有几个名称作为键的字典,每个名称都有一个带有一些数字的列表的值。我想获取列表值的每个索引的最大值的名称(键)。
我尝试编写以下代码,但它不起作用,我得到错误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 分隔为
names
and会更方便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
推荐阅读
- python-3.x - python矩阵乘法检查第一个矩阵的行数是否等于第二个矩阵的列数
- python - 恢复通过 websocket 发送的数据
- java - 如何用 CustomView 替换工具栏标题
- sed - 如何使用 GREP 并将结果放在不同的列但在同一行
- amazon-web-services - EKS 工作节点 IAM 角色优先于 POD 的 serviceaccount IAM 角色
- r - RecordLinkage 包 jarowinkler 没有输出
- python - Selenium 不能在 Mac OSX High Sierra 上与 Python 一起使用。更新:仅在通过终端启动 IDLE 时有效,否则无法找到所有路径
- python - 如何在 Python 中将 BufferedWriter 转换为字节数组?
- python - 正则表达式:结果不符合预期
- javascript - 赛普拉斯支持 Typescript:它的真正含义是什么?