字典(dict)

基本结构:

d = {key1 : value1, key2 : value2 }
dict = {'K1': 1, 'K2': 2, 'K3': ''}
  • key : value称为字典的键值对。
  • 每个键 key和值value 之间用冒号 : 分割
  • 每个键值对(也就是字典的一个元素)之间用逗号 , 分割
  • 整个字典包括在花括号  { }  中
  • 字典是无序的(所以不存在切片)
  • 值(value)可以取任何数据类型,但键(key)必须是不可变的(列表和字典不能作为字典的key)
  • (键就相当于地址,首先得固定,而且不能重复,键一般是唯一的,如果重复最后的一个键值对会替换前面的)

字典的功能

先给一个很长的字典(手动捂脸),这不是为难人嘛(难的都明白了,简单的不在话下)

d = {'K1': 18, 2: True, 'K3':[11,[1,6],('a',88),22,33,{'KK1':'VV1','KK2':'VV2','KK3':'VV3'}],'K4':(11,22,33,44)}

以下操作的针对这个长长的字典 d 的哦

1.索引取值

#通过索引 键(key)来获取一级元素
v1 = d['K1']
#通过索引来获取‘VV1’
v2 = d['K3'][5]['KK1']
print(v1,v2) #执行结果
18 VV1

2.clear

  • D.clear() -> None. Remove all items from D.
v = d.clear()
print(v)
#执行结果:
None

3.copy

  • D.copy() -> a shallow copy of D
v = d.copy()
print(v)

4.del

#利用索引,通过del删除字典中的元素
del d['K1']
del d['K3'][1][1]
print(d)

5.for循环

#for循环返回键(key)
for item in d:
print(item)
#执行结果:
K1
2
K3
K4
#for循环返回值value
for item in d.values():
print(item)
#执行结果
18
True
[11, [1, 6], ('a', 88), 22, 33, {'KK1': 'VV1', 'KK2': 'VV2'}]
(11, 22, 33, 44)
#for循环同时返回键(key)和值(value)
for k,v in d.items():
print(k,v)
#执行结果
K1 18
2 True
K3 [11, [1, 6], ('a', 88), 22, 33, {'KK1': 'VV1', 'KK2': 'VV2'}]
K4 (11, 22, 33, 44)

6.fromkeys

  • 根据序列,创建字典,并指定统一的值
  • Create a new dictionary with keys from iterable and values set to value.
v = dict.fromkeys(['k1','k2','k3'],666)
print(v) #执行结果
{'k1': 666, 'k2': 666, 'k3': 666}

7.get

  • Return the value for key if key is in the dictionary, else default.
  • 根据key获取值,key不存在时,可以指定返回值(默认情况下返回None)
v1 = d.get('K1')
v2 = d.get('K2')
v3 = d.get('K2',666)
print(v1,v2,v3)
#执行结果:
18
None
666

8. pop

  • D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
  • If key is not found, d is returned if given, otherwise KeyError is raised
#删除指定的元素,并将删除的值返回
d = {'k1':'v1', 'k2':'v2'}
v = d.pop('k2')
print(v,d)
#执行结果
v2 {'k1': 'v1'}
#第二个参数设置的意义:当要删除的对象不存在时,将第二个参数返回
#当要删除的对象不存在时,而第二个参数未设置,则报错
d = {'k1':'v1', 'k2':'v2'}
v = d.pop('k3','不存在')
print(v,d) #执行结果
不存在 {'k1': 'v1', 'k2': 'v2'}

9.popitem

  • D.popitem() -> (k, v), remove and return some (key, value) pair as a 2-tuple
  • but raise KeyError if D is empty.
#删除字典中最后一个元素,并将删除的键和值返回
d = {'k1':'v1', 'k2':'v2'}
k,v = d.popitem()
print(d,k,v)
#执行结果:
{'k1': 'v1'}
k2
v2

10.setdefault

  • Insert key with a value of default if key is not in the dictionary.
  • Return the value for key if key is in the dictionary, else default.
#设置值,如果该键存在,则不设置,获取当前key对应的值
d = {'k1':'v1', 'k2':'v2'}
v = d.setdefault('k1')
print(v)
#执行结果:
v1
#设置值,如果该键不存在,则设置,获取设置的key对应的值
d = {'k1':'v1', 'k2':'v2'}
v = d.setdefault('k3',666)
print(v)
#执行结果:
666

11.update

更新方式一:

#更新值,按照字典的形式,将对应key的值更新
#如果无对应key,将该key和对应的值加入原字典
d = {'k1': 'v1', 'k2': 'v2'}
d.update({'k1': 'xhg', 'k2': 123, 'k3': 'v3'})
print(d)
#执行结果
{'k1': 'xhg', 'k2': 123, 'k3': 'v3'}

更新方式二:

#按照 键=值 得形式对原字典进行更新
d = {'k1': 'v1', 'k2': 'v2'}
d.update(k1 = 'xhg', k2 = 123, k3 = 'v3')
print(d)
#执行结果
{'k1': 'xhg', 'k2': 123, 'k3': 'v3'}

12.in

#判断键是否存在字典中
d = {'k1': 'v1', 'k2': 'v2'}
v = 'k1' in d
print(v)
#判断值是否存在在字典中
v = 'v1' in d.values()
print(v)

关于布尔值的补充

None    ''     ()      {}      []      0   ==>False
其余 ==>True

最新文章

  1. iOS的一像素线
  2. 转 c# 日期函数[string.Format----GetDateTimeFormats]格式 .
  3. B/S与C/S区别
  4. xp主机用VMware9和10安装Ubuntu12.04后无法进入图像界面
  5. 使用GitHub进行协同项目开发和开源项目贡献
  6. linux 分区
  7. 如何取消input记忆功能
  8. FineReport填报分页设置
  9. thinkphp 面向切面编程-行为拓展
  10. nginx知识点简单回顾
  11. k8s使用helm打包chart并上传到腾讯云TencentHub
  12. STL迭代器iterator
  13. logback配置信息
  14. Deep Learning(花书)教材笔记-Math and Machine Learning Basics(线性代数拾遗)
  15. Delphi Locate 详解1 转
  16. C++点和箭头操作符用
  17. JavaSocket简单通信
  18. spring jpa和mybatis整合
  19. Service Fabric Placement and Load Balancing
  20. [Algorithm] Meeting hour optimization (Kanpsack problem) and Dynamic programming

热门文章

  1. filter 死循环(tomcat 启动完成 ,自动执行filter.dofilter,导致tomcat 启动超时) , tomcat 启动和 servers 启动 不同
  2. 20155235 2016-2017-2 《Java程序设计》第7周学习总结
  3. 2018.10.04 NOIP模拟 排队(组合数学)
  4. 2018.07.03 BZOJ 1007: [HNOI2008]水平可见直线(简单计算几何)
  5. 第六章 副词(Les adverbes )
  6. python类的继承-1
  7. DOM数据解析
  8. (字典树模板)统计难题--hdu--1251
  9. Robotframework 简介及工作原理
  10. hdu2571 命运 2016-09-11 16:54 53人阅读 评论(0) 收藏