簡體   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