python - python - 根据值对字典键进行排序
问题描述
我有一个格式为 Python 的字典:
my_dict = {'name': ['apple', 'orange', 'banana'],
'quantity': [20, 10, 30],
'price': [45, 50, 75]}
我首先想对水果进行排名,quantity
以便最终得到如下输出:
['banana', 'apple', 'orange']
然后我想打印出排名水果及其数量和价格,如下所示:
>>> banana:
price: 75
quantity: 30
apple:
price: 45
quantity: 20
orange:
price: 50
quantity: 10
到目前为止我所做的尝试:
attempt = sorted(my_dict.items(), key=lambda x:x[0])
sorted(my_dict.items(), key=lambda t: t[::-1])
解决方案
您可以使用 zip 组合 3 个键的列表元素并对 map() 函数中的元组进行排序(将数量作为第一个元素)。然后遍历理解中的那些以格式化并打印结果:
my_dic = {'name':['apple', 'orange', 'banana'],
'quantity':[20, 10, 30],
'price': [45, 50, 75]}
print(*( f"{n}:\nprice: {p}\nquantity: {q}\n"
for q,n,p in sorted(zip(*map(my_dic.get,('quantity','name','price'))),
reverse=True) ),
sep='\n')
banana:
price: 75
quantity: 30
apple:
price: 45
quantity: 20
orange:
price: 50
quantity: 10
推荐阅读
- ios - 恢复购买完成结果 (iOS)?
- javascript - 通过特定邀请加入时为新成员赋予角色
- angular - 需要在 nz transfer 中显示两个不同的数据
- javascript - 如何在浏览器中拼接/连接/合并两个 mp4 blob?
- python-3.x - 系统 python 版本激活而不是本地 pyenv 版本
- c# - C# Serilog 在写入文件之前压缩日志消息?
- rdkit - RDkit 可以将 csv 中的 SMILES 批量转换为单个图像吗?
- arrays - x86 阵列未打印到屏幕上
- python - 如何解决安装pyaudio的错误
- gwt - GWTcelltable 滚动条