字典包含了key和value

其中key是不可变的,value隶属于key是可以变的

字典是无序的,字典没有下标,通过key来寻找value

test = {'A':1,'B':'zhangsan','C':'lisi'}
print (test)

  • 查找
test = {'A':1,'B':'zhangsan','C':'lisi'}print (test['B'])


可以通过key、来查找值

print(test.get('C'))
print(test.get('F'))


通过get来查找,有就打印value,没有就打印None
使用get是一个比较安全的查找方式,如果查不到会返回None值,这样执行代码不会报错

print ('C' in test)    #这个类似python2.X中的test.has_key('C'),python3中已经没有has_key了

print (test.keys())
print (test.values())


查找所有key和查找所有value

  • 修改
test = {'A':1,'B':'zhangsan','C':'lisi'}test ['C']=33
test ['D']=44print(test)


根据key修改value ,存在则修改,不存在则新增

test1 = {'A':{'AA':111},'B':222}
test2 = {'B':123,'C':333}test1.update(test2)
print (test1)


将两个字典合并,已存在的key会被覆盖,没有则新增

test1 = {'A':{'AA':111},'B':222}
print (test1.items())


将字典转成列表

  • 删除
test = {'A':1,'B':'zhangsan','C':'lisi'}del test['A']print (test)

print(test.pop('B'))  #pop删除并返回删除的内容


使用pop删除后,会返回删除的值

test = {'A':1,'B':'zhangsan','C':'lisi','D':4,'E':5}
test.popitem()
print (test)


使用popitem会随机删除一个(好像删除的是最后一个)

  • 多级字典
test = {'A':{'AA':[123,456]}}        #三级嵌套,本实例是两个字典,一个列表print (test)

test['A']['AA'][13]=789
print (test)

  • setdefault

    test = {'A':1,'B':2,'C':3}
    test.setdefault('C',{'CCC':333})
    test.setdefault('D',{'DDD':444})
    print (test)


    setdefault到字典中获取key的值并返回,如果没有则新增

  • fromekeys
    a = dict.fromkeys(['A','B','C'])
    print(a)


    创建一个新的字典,然后批量创建字典的key,默认value为None,可以修改None,通过批量建立key,这样减少了一半建立字典的工作量。

test = {'A':1,'B':2,'C':3}
a = test.fromkeys(['AA','BB','CC'])
print (a)


将现有的字典给修改了

test = {'A':1,'B':2,'C':3}
a = test.fromkeys(['AA','BB','CC'],'123')
print (a)


可以批量赋予key的value

print (test)


其实可以看到test并没有改变,也就是说fromkeys不会改变现有的字典
fromkeys只会初始化一个新的字典

a = dict.fromkeys(['A','B','C'],[111,{'name':'aubrey'},222])
print(a)


批量为字典key A、B、C赋值[111,{'name':'aubrey'},222]

a['C'][1]['name']='Peter'        #修改A字典C这个key的value
print(a)


但实际看到的是,所有key的value都被修改了
这是因为当使用fromkeys,设置多级字典时,value使用的是同一个内存地址,所以当修改一个的时候,其他也就都被修改了。

  • 循环
test = {'A':1,'B':2,'C':3}
for i in test:print (i,test[i])            、#打印的第一个i是循环只是将所有key赋值给i,所以在打印第一个i的时候,仅仅打印的是这个i的赋值,并不是字典;但是打印的第二个test[i]就是打印字典了,和你直接使用print test['A']是一样的,只不过这里将A、B、C这三个key对饮的值都打印了一遍


循环打印字典

for k,v in test.items():
#.items将字典变成列表,也就是['A',1],k对应的这个A,v对应这个1,然后就这样赋值循环;这种方式没有上面的好,因为需要不断的将字变成程列表,再去循环
print(k,v)

转载于:https://blog.51cto.com/daimalaobing/2046481

Python09 字典相关推荐

  1. 一木.溪桥学Python-09:函数的返回值、函数的作用域、作用域的优先级、递归函数、内置文件中常用方法、匿名函数lambda、高阶函数

    一木.溪桥 在Logic Education跟Amy学Python 12期:Python基础课 一木.溪桥学Python-09:函数的返回值.作用域.作用域的优先级.递归函数.内置文件中常用方法.匿名 ...

  2. Go 学习笔记(67)— Go 并发安全字典 sync.Map

    1. 并发不安全的 map Go 语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的. 换句话说,在同一时间段内,让不同 goroutine 中的代码,对同一个字典进行读写操作是 ...

  3. Python 将字符串转为字典

    引言 在工作中遇到一个小问题,需要将一个 Python 的字符串转为字典,比如字符串: user_info = '{"name" : "john", " ...

  4. 【C#】集合_哈希表_字典_泛型_文件

    数组能做到:存放同种类型数据,且数据个数确定 object类型的数组能满足:放各种类型的数据,确定放多少个,但是随意插入元素,数组做不到 集合能做到:存放各种数据类型,且不确定存放多少个,能做到随意插 ...

  5. Python两个字典键同值相加的几种方法

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/Jerry_1126/article/d ...

  6. pytorch 状态字典:state_dict 模型和参数保存

    pytorch 中的 state_dict 是一个简单的python的字典对象,将每一层与它的对应参数建立映射关系.(如model的每一层的weights及偏置等等) (注意,只有那些参数可以训练的l ...

  7. Python 字典(Dictionary) get()方法

    Python 字典(Dictionary) get()方法 描述 Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法: ...

  8. python 把2个列表或者2个元组转成字典

    python 把2个列表或者2个元组转成字典 使用映射的方法即可 语法如下: 字典 = dict(zip(list1,list2)) 说明: zip 是将2个列表或者2个元组合并 list1 是字典的 ...

  9. python 在字典插入值和修改字典value值的方法

    字典插入值 使用update是字典增加内容 dict_a = {"a": "1", "b": "2", "c& ...

最新文章

  1. 利用blktrace分析磁盘I/O
  2. 10亿级数据规模的半监督图像分类模型,Imagenet测试精度高达81.2% | 技术头条...
  3. 腾讯员工:越来越多的新生都想要学计算机专业,好日子长不了
  4. django--favicon.ico
  5. Flutter开发之布局-3-center(17)
  6. 简述平均池化和最大池化
  7. tensorflow sobel算子实现
  8. SVN项目,快速查看项目的当前版本号
  9. php Heredoc应用说明
  10. cocos2d对动画的各种操作
  11. html select 修改默认箭头样式,自定义select标签箭头样式
  12. C# The user specified as a definer (‘root‘@‘%‘) does not exist
  13. log4j2配置文件log4j2.xml
  14. eclipse默认项目部署路径(.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps) 改为自己的tomcat真实路径方法
  15. ant批量处理word文件内容_word多个文件批量替换内容
  16. [转] Spring XML配置十二个最佳实践
  17. 企业数字化转型必备利器之微服务扩展
  18. iOS开发之国际化(二)
  19. Glusterfs的安装及简单使用
  20. iOS 无线打印功能(AirPrint)

热门文章

  1. Java 基本数据类型
  2. 原来小清新色调是这样调出来的~
  3. 趣味编程:从字符串中提取信息(参考答案 - 上)
  4. 2013年4月20日 通用权限管理系统组件V3.8功能改进说明
  5. Window Function--the function of window function
  6. php中的foreach和js中的foreach的用法和区别
  7. topcoder srm 711 div1 -3
  8. 从JVM指令层面看try-catch-finally返回值问题
  9. 简单的XML和JSON数据的处理
  10. 41. First Missing Positive