簡體   English   中英

使用嵌套元組鍵在Python dict中查找最大值

[英]Finding max in Python dict with nested tuple keys

假設我有這個Python字典:

dict = {
((0,0), 'A'): 0.0, 
((0,0), 'B'): 0.7,
...
((2,4), 'C'): 0.2,
...}

我想找到給定嵌套元組的最大值,如(0,0)。 就像是:

max(dict((0,0), *). 

在這種情況下,它應該返回0.7,該怎么做?

使用collections.defaultdict后跟字典理解:

d = {((0,0), 'A'): 0.0, 
     ((0,0), 'B'): 0.7,
     ((2,4), 'C'): 0.2}

from collections import defaultdict

res = defaultdict(list)

for (k1, k2), v in d.items():
    res[k1].append(v)

max_vals = {k: max(v) for k, v in res.items()}

print(max_vals)

{(0, 0): 0.7, (2, 4): 0.2}

如果我了解您的需要。

d = {((0,0), 'A'): 0.0, ((0,0), 'B'): 0.7, ((2,4), 'C'): 0.2,}
dValue = dict((k, v) for k,v in d.items() if k[0] == (0,0))
print( max(dValue.values()) )

輸出:

0.7

我為您的問題做了一個非常簡單的例子。 當然,有一種更有效的方法可以做到這一點。

dict = { ((0, 0), "A"): 0.0,
         ((0, 0), "B"): 0.7, 
         ((0, 0), "C"): 0.9, 
         ((0, 1), "A"): 0.0,
         ((0, 1), "B"): 0.7, 
         ((0, 1), "C"): 0.8}
mymax={}
for key1,key2 in dict:
    if key1 in mymax:
        mymax[key1] = max(mymax[key1],dict[(key1,key2)])
    else:
         mymax[key1] = dict[(key1,key2)]

mymax= {(0, 0): 0.9, (0, 1): 0.8}具有每種類型的最大值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM