说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
(编码题)有一个字典 fruits,包含了水果名称及它们的单价和重量,需求期望得到一个水果名的列表,这个列表以总价由大到小排列。
fruits = {
'apple': {'price': 2.5, 'weight': 0.3},
'banana': {'price': 1.8, 'weight': 0.2},
'orange': {'price': 3.0, 'weight': 0.4},
'kiwi': {'price': 4.2, 'weight': 0.1},
'mango': {'price': 5.0, 'weight': 0.6},
}
# 结果为
['mango', 'orange', 'apple', 'kiwi', 'banana']
Python 代码如下:
fruits = {
'apple': {'price': 2.5, 'weight': 0.3},
'banana': {'price': 1.8, 'weight': 0.2},
'orange': {'price': 3.0, 'weight': 0.4},
'kiwi': {'price': 4.2, 'weight': 0.1},
'mango': {'price': 5.0, 'weight': 0.6},
}
price = [
(v['price']*v['weight'], k)
for k, v
in zip(fruits, fruits.values())
]
price.sort(reverse=True)
res = [i[1] for i in price]
res
# ['mango', 'orange', 'apple', 'kiwi', 'banana']
还可以用以下代码:
fruits = {
'apple': {'price': 2.5, 'weight': 0.3},
'banana': {'price': 1.8, 'weight': 0.2},
'orange': {'price': 3.0, 'weight': 0.4},
'kiwi': {'price': 4.2, 'weight': 0.1},
'mango': {'price': 5.0, 'weight': 0.6},
}
sorted_fruits = sorted(
fruits.items(),
key=lambda x: x[1]['price'] * x[1]['weight'],
reverse=True
)
res = [fruit for fruit, details in sorted_fruits]
res
# ['mango', 'orange', 'apple', 'kiwi', 'banana']
查看相关链接中的知识。
(完)
更新时间:2024-08-16 22:57:11 标签:python 习题 字典 排序