[英]How to return iterable in Python list Comprehension
在下面的代碼中:
states = ["A","B","C","D"]
priors = {"A": 1.0, "B": -1.0, "C": 0, "D": 0}
values = {} #setup an empty dictionary
for s in states:
values[s] = {"Value1": priors[s], "Value2": 3.0}
max_val = max(values[prevS]["Value1"]*-1 for prevS in states)
我需要返回max_val 和對應於該最大值的prevS。 我怎樣才能做到這一點?
你可以這樣做:
>>> max((values[prevS]["Value1"]*-1, prevS) for prevS in states)
(1.0, 'B')
這將使值及其prevS值成為元組,並取其中的最大值。 由於“值”首先出現,因此最大值將首先作用於該值,並且prevS值僅用於打破平局。
也許這就是您想要的?
states = ["A","B","C","D"]
priors = {"A": 1.0, "B": -1.0, "C": 0, "D": 0}
values = ((item[0], item[1]*-1) for item in priors.items() if item[0] in states)
print max(values, key=lambda i:i[1])
結果
('B', 1.0)
或這個:
states = ["A","B","C","D"]
priors = {"A": 1.0, "B": -1.0, "C": 0, "D": 0}
values = {item[0]:{'Value1':item[1]*-1, 'Value2':3.0} for item in priors.items() if item[0] in states}
print max(values.items(), key=lambda i: i[1]['Value1'])
結果
('B', {'Value2': 3.0, 'Value1': 1.0})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.