我正在使用与此类似的数据集:
animals = {
"antelope": {
"latin": "Hippotragus equinus",
"cool_factor": 1,
"popularity": 6
},
"ostrich": {
"latin": "Struthio camelus",
"cool_factor": 3,
"popularity": 3
},
"echidna": {
"latin": "Tachyglossus aculeatus",
"cool_factor": 5,
"popularity": 1
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是找到受欢迎程度加权的"最不酷"和"最酷"的动物,这样:
> min_cool_weighted(animals)
"echidna"
> max_cool_weighted(animals)
"ostrich"
Run Code Online (Sandbox Code Playgroud)
首先来到我的解决方案是创建3个数组(keys,cool_factors和popularities),循环遍历字典,将所有值推入3个数组,然后创建第四个数组,每个值在哪里weighted[i] = cool_factor[i] * popularity[i],然后取最小值/最大值并抓取键数组中的相应键.但是,这似乎不是Pythonic.
有更好,更有表现力的方式吗?
min(animals, key=lambda x: animals[x]["cool_factor"]*animals[x]["popularity"])
'echidna'
max(animals, key=lambda x: animals[x]["cool_factor"]*animals[x]["popularity"])
'ostrich'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |