好好学Python:从零基础到项目实战
上QQ阅读APP看书,第一时间看更新

5.6 牛刀小试——字典合并与排序

有两个字典,先将字典合并,完成后对合并的字典进行排序。

大体思路:

(1)借助字典的update函数将字典合并。

(2)准备一个将字典转化为列表的函数(知识点:字典转化为列表)。

(3)将转化后的列表进行排序(知识点:列表排序)。

(4)将排序好的列表转化为字典(知识点:列表转化为字典)。

代码实现:

>>> def merge_range():
...     lan_ver = {"lan": "python", "v": "3.9"}
...     rea_ai = {"why": "hobby", "how": "do"}
...     d_merge = dict()
...     d_merge |= lan_ver
...     d_merge |= 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.9', 'why': 'hobby', 'how': 'do'}
按照第0个元素降序排列: {'why': 'hobby', 'v': '3.9', 'lan': 'python', 'how': 'do'}
按照第0个元素升序排列: {'how': 'do', 'lan': 'python', 'v': '3.9', 'why': 'hobby'}