首页 > 解决方案 > 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])

标签: pythonpython-3.x

解决方案


您可以使用 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

推荐阅读