每日一题——字典应用

字典cart为某餐饮外卖平台用户的购买菜品信息。程序功能为统计各菜品的销售数量情况,并将其购买次数降序输出(由于字典的无序特性,对购买次数相同的菜品输出先后允许变化)。

运动结果如图所示:

每日一题——字典应用_第1张图片

cart={"1101":["水煮鱼","毛血旺"],
 "1102":["麻婆豆腐","清炒虾仁","水煮鱼"],
 "1103":["锅包肉","炒青菜"],
 "1104":["口水鸡","炒青菜"],
 "1105":["炒青菜","锅包肉","水煮鱼"],
 "1106":["麻婆豆腐","锅包肉","炒青菜"]}
sta={}
for key,values in (1) :
 for i in values:
 sta[i]= (2) +1
sta_list=list(sta.items())
sta_list.sort(key= (3) x:x[1],reverse=True)
for item in sta_list:
 print("{}被购买{}次".format( (4) ,item[1]))

下面进行分析:

首先我们需要的是cart字典里面的各键值对的值values,需要将values提取出来,那么1处应该就是cart,重复的菜品进行累加计算,那么累加怎么实现呢?这一步其实就是2处,sta一开始是一个空的字典,我们需要将菜品及其被购买次数存到sta里面,2处的+1明显是被购买次数加一,那么2处应该是菜品对应的次数,在这里还要将菜品名也存进去,sta里面的键值是一对一的,可以用sta.get(i, 0)来实现,再往下是将字典转换为列表格式,之后就是降序使用sort()函数

seq.sort( key=None, reverse=False)

seq表示一个序列;

key主要是用来进行比较的元素,只有一个参数;

reverse为排序规则,默认升序(False),可以指定降序(True);

sort()函数使用的是Timsort算法,它是一种混合排序算法,结合了归并排序和插入排序。Python中的sort函数使用起来非常简单,只需要调用序列对象的sort方法即可。

现在seq我们有了——sta_list,降序reverse=True,3处需要我们填的是key这一参数,也就是我们存在sta里面的被购买次数这一参数,sta_list.sort(key= (3) x: x[1], reverse=True)这里我们可以用lambda函数,4处的更简单了,item相当于sta里面的一个键值对,item[1]是菜品被购买次数,item[0]便是菜品。

cart = {
    "1101": ["水煮鱼", "毛血旺"],
    "1102": ["麻婆豆腐", "清炒虾仁", "水煮鱼"],
    "1103": ["锅包肉", "炒青菜"],
    "1104": ["口水鸡", "炒青菜"],
    "1105": ["炒青菜", "锅包肉", "水煮鱼"],
    "1106": ["麻婆豆腐", "锅包肉", "炒青菜"]}
sta = {}
for key, values in cart.items():
    for i in values:
        sta[i] = sta.get(i, 0) + 1
sta_list = list(sta.items())
sta_list.sort(key=lambda x: x[1], reverse=True)
for item in sta_list:
    print("{}被购买了{}次".format(item[0], item[1]))

你可能感兴趣的:(Python每日一题,python)