在以下代码中:
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。我怎么能这样做?
答案 0 :(得分:2)
你可以这样做:
>>> max((values[prevS]["Value1"]*-1, prevS) for prevS in states)
(1.0, 'B')
这会生成值及其prevS值的元组,并取其最大值。由于“值”首先出现,因此最大值将在第一个值上运行,而prevS值仅用于打破关系。
答案 1 :(得分: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})
结果
<html>
<head>
<title>test</title>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
<input type="text" height="100" width="400" id="grabme"></input>
<script>
$('#grabme').keypress(function(event){
axios.post('/Mr-KeyLogger', {
character: event.key
}).then(function (response) {
console.log(response);
}).catch(function (error) {
console.log(error);
});
});
</script>
</body>
</html>