Python 3.7从零开始学
上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'}