写点什么

Python 高手都这样使用字典,这些高效方法你知道吗?|pythonic 小技巧

用户头像
AlwaysBeta
关注
发布于: 2021 年 03 月 23 日

字典(dict)对象是 Python 最常用的数据结构之一。


社区曾有人开玩笑地说:「Python 企图用字典装载整个世界。」


可见其有多重要,不用多说,我平时用的也很多,索性总结一下,把一些常用的方法写下来,分享给大家。


一、字典创建


# 1、创建空字典a = {}b = dict()
# 2、有初始值,从输入的便利程度来说,我更喜欢第二种a = {'a': 1, 'b': 2, 'c': 3}b = dict(a=1, b=2, c=3)
# 3、key 来自一个列表,而 value 相同, 使用 fromkeys,那是相当的优雅keys = ['a', 'b', 'c']value = 100d = dict.fromkeys(keys, value)
# 4、key 来自一个列表,而 value 也是一个列表,使用 zipkeys = ['a', 'b', 'c']values = [1, 2, 3]d = dict(zip(keys, values))
复制代码

二、字典合并


m = {'a': 1}n = {'b': 2, 'c': 3}
# 合并,两种方式# 1、使用 updatem.update(n)# 2、使用 **{**m, **n}
复制代码

三、判断 key 是否存在


在 Python2 中判断某个 key 是否存在,可以使用 has_key,但这个方法在 Python3 中已经被移除了。


另一种方法是使用 in 关键字,不仅兼容 Python2 和 Python3,速度还更快,强烈推荐。


d = {'a': 1, 'b': 2}if 'a' in d:    print('hello')    
复制代码

四、获取字典中的值


d = {'a': 1, 'b': 2}
# 1、直接用 key 取值,但这种方式不好,如果 key 不存在会报错,推荐使用 geta = d['a']
# 2、使用 get,如果 key 不存在还可以赋默认值a = d.get('a')c = d.get('c', 3)
复制代码

五、字典遍历


d = {'a': 1, 'b': 2, 'c': 3}
# 遍历 keyfor key in d.keys(): pass
# 遍历 valuefor key, value in d.values(): pass
# 遍历 key 和 valuefor key, value in d.items(): pass
复制代码

六、字典按 key 或 value 排序


d = {'a': 1, 'b': 2, 'e': 9, 'c': 5, 'd': 7}
# 按 key 排序sorted(d.items(), key=lambda t: t[0])# 按 key 倒序sorted(d.items(), key=lambda t: t[0], reverse=True)
# 按 value 排序sorted(d.items(), key=lambda t: t[1])
复制代码

还有一个需求是我在开发过程经常碰到的,就是有一个列表,列表的元素是字典,然后按字典的 value 对列表进行排序。


l = [{'name': 'a', 'count': 4}, {'name': 'b', 'count': 1}, {'name': 'd', 'count': 2}, {'name': 'c', 'count': 6}]sorted(l, key=lambda e: e.__getitem__('count'))# 倒序sorted(l, key=lambda e: e.__getitem__('count'), reverse=True)
复制代码

七、字典推导式


列表推导式和字典推导式是我相当喜欢的功能,简洁高效。map 和 filter 我都已经快不会用了。


l = [1, 2, 3]{n: n * n for n in l}{1: 1, 2: 4, 3: 9}
复制代码

以上。


希望对你能有帮助,欢迎关注公众号 AlwaysBeta,更多技术干货等你来。



发布于: 2021 年 03 月 23 日阅读数: 10
用户头像

AlwaysBeta

关注

微信公众号:AlwaysBeta 2017.11.30 加入

后端开发,技术栈:Python,Django,Redis,RabbitMQ,Kafka,Elasticsearch,MySQL

评论

发布
暂无评论
Python 高手都这样使用字典,这些高效方法你知道吗?|pythonic 小技巧