优雅的字典

北冥有鱼,其名为鲲,鲲之大,一锅炖不下。鲲炖不下,那今天我们来炖一锅字典(dict)。
在Python的使用中,字典是一个基础且使用率报表的数据类型。

字典的创建与初始化

#创建一个字典
a={}
b=dict()
"""
我们常初在始化空字典时,使用到上面两种方式。
如果我们在字典创建的同时需要赋值呢?
"""
# 普通的方式
a={'a':1,'b':'to','c':'63'}
# 更优雅的赋值
b=dict(a=1,b='to',c='63')
"""不管从重复输入的引号上,还是从输入方便考虑,你都该选择后者
再深入一下,如果我们现在有四个人,
需要统计他们的工资,初始没人都是10000,该如何创建?
按照上面的dict(x=y)没错,但批量的初始化,你应该使用更优雅的方式:
"""
names=["zhang","wang","li","zhao"]
# 普通方式
users = dict(zhang=10000,wang=10000,li=10000,zhao=10000)
# 更优雅的方式
user1.dict().formatkeys(names,10000) 

获取字典的值

a={'a':1,'b':'to','c':'63'}
a['b']
>>> output:  to
"""
上面的这种value值获取方式较为常见,但如果a中没有b,
或者在字典的使用过程中b 这个key被del了呢?
这是会报一个KeyError的错误,所以养成好习惯,使用下面的方式
当key值不存在时,返回none,或者自定义一个默认值。
"""
a.get('b',[default_no可选...])

说说更新与删除

#  更新
a={'a':1,'b':'to','c':'63'}
a.update('a':2)
a.update(a=2) # 这种方式同样适用与更新操作
# 删除某个键值对
del a['a']
pop('a')
"""
两者都可以达到删除某个键值对的操作,
但后者相当于去除后删除,具备返回值
"""
del a 删除字典a
a.clear()清空字典a

判断has_key操作

"""
python2中,判断字典是否存在某个值,可以使用has_key('key'),
但在python3中取消了该参数,如果我们想判断可以使用以下方式:
"""
a={'a':1,'b':'to','c':'63'}
'b' in a.keys()
a.__contains__('b')

使用enumerate,优雅的输出字典

a = {'a': 1, 'b': 'to', 'c': '63'}
for line, item in enumerate(a.items(), start=1):print("[{}] {} --> {}".format(line, *item))
>>> output:
"""
[1] a --> 1
[2] b --> to
[3] c --> 63
"""

OrderedDict的使用

我们知道默认的dict(字典)是无序的,但是在某些情形我们需要保持dict的有序性,这个时候可以使用OrderedDict,它是dict的一个subclass(子类),但是在dict的基础上保持了dict的有序型,下面我们来看一下使用方法。
example1:

>>> from collections import OrderedDict
# 无序的dict
>>> d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2}这是一个无序的dict(字典),现在我们可以使用OrderedDict来让这个dict变得有序。# 将d按照key来排序
>>> OrderedDict(sorted(d.items(), key=lambda t: t[0]))
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
# 将d按照value来排序
>>> OrderedDict(sorted(d.items(), key=lambda t: t[1]))
OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])
# 将d按照key的长度来排序
>>> OrderedDict(sorted(d.items(), key=lambda t: len(t[0])))
OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)])

example2:

"""
使用popitem(last=True)让我们按照LIFO(先进后出)顺序删除dict中的key-value,
即删除最后插入的键值对,如果last=False就按照FIFO删除dict中key-value。
"""
>>> d = {'banana': 3, 'apple': 4, 'pear': 1, 'orange': 2}
# 将d按照key来排序
>>> d = OrderedDict(sorted(d.items(), key=lambda t: t[0]))
>>> d
OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
# 使用popitem()方法来移除最后一个key-value对
>>> d.popitem()
('pear', 1)
# 使用popitem(last=False)来移除第一个key-value对
>>> d.popitem(last=False)
('apple', 4)

example3:

"""
使用move_to_end(key,last=True)来改变有序OrderedDict的key-value顺序,
通过这个方法我们可以将排序好的OrderedDict对象中的任意一个key-value,插入到字典的开头或者结尾。"""
>>> d = OrderedDict.fromkeys('abcd')
>>> d
OrderedDict([('a', None), ('b', None), ('c', None), ('d', None)])
# 将key为b的key-value对移动到dict的最后
>>> d.move_to_end('b')
>>> d
OrderedDict([('a', None), ('c', None), ('d', None),  ('b', None)])
>>> ''.join(d.keys())
'acdeb'
# 将key为b的key-value对移动到dict的最前面
>>> d.move_to_end('b', last=False)
>>> ''.join(d.keys())
'bacde'

好了,今天的内容就到这里,如果觉得有帮助,记得点赞支持。欢迎大家关注我的公众号【清风Python】

来源:清风Python

Python字典技巧一锅炖相关推荐

  1. python 字典技巧

    一般的创建字典方法 # 创建方法 {} dict1 = {} # 创建了一个字典 dict1 = {"a":1, "b":2, "c":3} ...

  2. 技巧 | Python 字典用法详解(超全)

    文章目录 1.dict.clear() 2.dict.copy() 3.dict.fromkeys() 4.dict.get() 5.dict.items() 6.dict.keys() 7.dict ...

  3. 高估自己了?Python 字典这6个使用技巧着实太妙

    Python 的优点之一是字典可以与 JSON 对象无缝集成,这使得字典数据结构的使用比其他编程语言更频繁. 在这篇文章中,我将介绍 6 个关于 Python 字典的技巧,相信如果你以前不知道这些技巧 ...

  4. python字典操作技巧_python的字典使用方法大全

    字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 . 键一般是唯一的,如 ...

  5. 收藏喜+1!值得使用的100个Python小技巧

    目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习.Web开发.脚本编写.自动化等 ...

  6. 快收藏!整理了 100 个 Python 小技巧

    作者:小F 来源: 法纳斯特 目前Python可以说是非常流行,在目前的编程语言中,Python的抽象程度是最高的,是最接近自然语言的,很容易上手. 你可以用它来完成很多任务,比如数据科学.机器学习. ...

  7. python字典操作添加_Python字典常见操作实例小结【定义、添加、删除、遍历】

    本文实例总结了python字典常见操作.分享给大家供大家参考,具体如下: 简单的字典: 字典就是键值对key-value组合. #字典 键值对组合 alien_0 ={'color':'green', ...

  8. 倒排索引统计与 Python 字典

    2019独角兽企业重金招聘Python工程师标准>>> 最近折腾索引引擎以及数据统计方面的工作比较多, 与 Python 字典频繁打交道, 至此整理一份此方面 API 的用法与坑法备 ...

  9. python字典删除元素_Python简单遍历字典及删除元素的方法

    本文实例讲述了Python简单遍历字典及删除元素的方法.分享给大家供大家参考,具体如下: 这种方式是一定有问题的: d = {'a':1, 'b':2, 'c':3} for key in d: d. ...

最新文章

  1. DNS服务器的默认区域文件名,DNS服务器全攻略之三 :创建与管理DNS区域.doc
  2. sainsbury online order
  3. web.xml配置(转)
  4. Sprint2-3.0
  5. php设置用户头像,PHP针对多用户实现更换头像功能
  6. 如何验证登录oracle,Oracle登录验证方式详解
  7. Scrapy 调用chrome浏览器的middleware
  8. Ayla 物联网平台全面支持主流智能语音系统
  9. Nginx + Tomcat + HTTPS 配置不需要在 Tomcat 上启用 SSL 支持
  10. 复合索引的使用与创建时候的顺序有关 如果顺序颠倒 则不起作用
  11. Python的Cython在Windows环境下的部署安装
  12. SQL Server Join方式
  13. C语言如何求球的体积和表面
  14. java 判断日期格式_java判断字符是否是日期格式
  15. three.js贴图之CubeTextureLoader全景贴图
  16. 分布式学习(7)etcd@3@ API v3 gRPC_事务,租约
  17. haut 1262: 魔法宝石(dij+堆优化)@
  18. Unity—实现通过按键控制2D游戏物体的移动
  19. 【F2C】git常见命令
  20. 2021年中国电子商务政策汇总分析:电子商务行业体系不断完善,跨境电商、农村电商蓬勃发展[图]

热门文章

  1. c语言教程for,C语言菜鸟基础教程之for循环
  2. python类class定义_python基础教程之类class定义使用方法
  3. oneproxy mysql_在OneProxy的基础上实行MySQL读写分离与负载均衡
  4. 1,Django 基础一
  5. Myeclipse修改设置Default VM Arguments
  6. 树状数组萌新讲解+基础习题【一点一滴】
  7. 经典算法(61~90)
  8. p内的a截取字符串,会将a与p的其他内容撑开(IE6、IE7)
  9. Function spec
  10. 算法导论-线性时间排序习题解