上QQ阅读APP看书,第一时间看更新
5.4 牛刀小试——字典合并与排序
有两个字典,先将字典合并,完成后对合并的字典进行排序。
大体思路:
(1)借助字典的update函数将字典合并。
(2)准备一个将字典转化为列表的函数(知识点:字典转化为列表)。
(3)将转化后的列表进行排序(知识点:列表排序)。
(4)将排序好的列表转化为字典(知识点:列表转化为字典)。
具体实现如下:
>>> def merge_range(): ... lan_ver = {"lan": "python", "v": "3.7"} ... rea_ai = {"why": "hobby", "how": "do"} ... d_merge = dict() ... d_merge.update(lan_ver) ... d_merge.update(rea_ai) ... desc_list = sorted(dt2ls(d_merge), key=lambda x:x[0], reverse=True) ... desc_dict = dict(desc_list) ... asc_list = sorted(dt2ls(d_merge), key=lambda x:x[0], reverse=False) ... asc_dict = dict(asc_list) ... print(f'合并后的结果:{d_merge}') print(f'按照第0个元素降序排列:{desc_dict}' ) print(f'按照第0个元素升序排列:{asc_dict}' ) ... >>> def dt2ls(dic:dict): ... """ 将字典转化为列表 """ ... keys = dic.keys() ... values = dic.values() ... lst = [(key, val) for key, val in zip(keys, values)] ... return lst ... >>> merge_range()
输出结果:
合并后的结果: {'lan': 'python', 'v': '3.7', 'why': 'hobby', 'how': 'do'} 按照第0个元素降序排列: {'why': 'hobby', 'v': '3.7', 'lan': 'python', 'how': 'do'} 按照第0个元素升序排列: {'how': 'do', 'lan': 'python', 'v': '3.7', 'why': 'hobby'}