博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python数据类型-字典
阅读量:5270 次
发布时间:2019-06-14

本文共 2124 字,大约阅读时间需要 7 分钟。

字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。

两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

字典的查询速率要高于列表,列表属于线性存储

 
#!/usr/bin/python # -*- coding: UTF-8 –*- d = {} d['one'] = "This is one" #字典中添加元素 格式:字典名[键] = 值 d[''] = "This is two" tinydict = {
'name': 'john','code':6734, 'dept': 'sales'}

1、查

# 当通过索引取值时,如果 key 不存在,返回默认值:None,也可以指定默认值:d.get('key','str'),返回默认值:strprint(d.get('one1'))  # 输出键为'one' 的值,键不存在不会报错,返回 None,推荐使用# print(d['one1'])  # 输出键为'one' 的值,如果键不存在则报错print(d['2'])  # 输出键为 '2' 的值print(tinyd)  # 输出完整的字典print(tinyd.keys())  # 输出所有键print(tinyd.values())  # 输出所有值print(d.items())  # 获取所有的键值对print('str' in d.keys())  # 检测字典中的key是否存在,返回 true、falseprint(sorted(d))  # 默认按键名排序,排序也是要数据类型要一致,不然会报错

2、增

d2 = {}d2['hjc'] = "boy"  # 字典中添加元素 格式:字典名[添加的键] = 值,如果键存在,将修改键的值d.update(d2)  # 把字典2合并到字典1里去 格式:源字典.update(被合并的字典),如果存在同样的键,合并后会覆盖旧的键d.update({
'k1': 'v1'}) # 另一个添加方法print(d) # {'one': 'This is one', '2': 'This is two', , }

3、改

d['hjc'] = "girl"  # 字典用修改元素 格式:字典名[修改的键] = 值# 如果 hobby 键不存在,则新建一对键值对,并打印,存在,则不做任何处理,并把存在的值打印出来d.setdefault('hobby', 'girl')print(d)    # {'one': 'This is one', '2': 'This is two', 'hjc': 'girl', }

4、删

del d['hjc'] # 删除字典中的元素和值 格式:del 字典名['删除的键'],d.clear() # 清除字典中的所有内容,返回空字典print(d.pop('key')) # 删除对应的 key 和 value,如果键不存在会报错, 可以避免错误,返回 Noneprint(d.popitem()) # 随机删除一组键值对,没卵用

5、其他方法

dict1 = dict.fromkeys(['host1', 'host2', 'host3'],'test')  # test 作为值,同时赋值给前面的 3 个键print(dict1)  # {'host1': 'test', 'host2': 'test', 'host3': 'test'}dict1 = dict.fromkeys(['host1', 'host2', 'host3'], ['test1', 'test2'])  # 值作为列表,赋值给前面的3个键,作为值print(dict1) # {'host1': ['test1', 'test2'], 'host2': ['test1', 'test2'], 'host3': ['test1', 'test2']}
# 循环取 key:for i in tinyd:    print(i)# 循环遍历取 键值对;# 法1:(推荐,效率最高)for i in tinyd:    print(i, tinyd[i])'''name johncode 6734dept sales'''# 法2:for k, v in tinyd.items():  # items 默认输出键值对,这里设置变量,把 key 赋值给 k,value 赋值给 v    print(k, v)'''name johncode 6734dept sales'''# 法3:new_dic = dict(enumerate(tinyd))print(new_dic)  # {0: 'name', 1: 'code', 2: 'dept'}

转载于:https://www.cnblogs.com/tootooman/p/8954530.html

你可能感兴趣的文章
LightOJ 1236 Pairs Forming LCM(算术基本定理)
查看>>
WPF DataGridTextColum 显示时间格式化
查看>>
js数组
查看>>
插入排序——java实现
查看>>
『jQuery』名称冲突
查看>>
SRF之数据字典
查看>>
[原]SQL_实验2.1.3 清华大学出版社
查看>>
jQuery 2.0.3 源码分析 回调对象
查看>>
Android Scrollview嵌套下listView动态加载数据,解决onScrollChanged执行多次数据重复问题...
查看>>
蓝桥杯 第三届C/C++预赛真题(4) 奇怪的比赛(递归)
查看>>
JsonArray和JsonObject遍历方法
查看>>
JavaScript中解析JSON数据的三种方法
查看>>
最新版的Chrome不能设置网页编码怎么解?
查看>>
java.lang.String 类的所有方法
查看>>
自己写的一个javascriptsort万能比较函数
查看>>
155.Min Stack
查看>>
冒泡排序
查看>>
test
查看>>
用Windows操作系统的人有时会遇到这样的错误信息:
查看>>
Selenium3+Python3_12:HTML测试报告
查看>>