版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xyy1028/article/details/84981446
一.创建字典
1.直接创建
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
print str(a).decode('string_escape')
# 输出:{'a': 123, 'c': 'pen', 'b': 456, 'd': '嘿嘿'}
2.fromkeys()方法创建,创建所需所有的key值的字典,默认值为None
a = ["a", "b", "c"]
b = dict.fromkeys(a)
print b
# 输出:{'a': None, 'c': None, 'b': None}
可以自定义默认值
a = ["a", "b", "c"]
b = dict.fromkeys(a, 250)
print b
# 输出:{'a': 250, 'c': 250, 'b': 250}
二.访问字典
1.直接访问如果访问不存在的key,会报keyerror
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
print(a['a'])
# 输出:123
2.get() 方法如果访问不存在的key,返回None
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
print(a.get('e'))
# 输出:None
3.get() 方法如果访问不存在的key,返回默认的设定值
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
print(a.get('key', '404'))
# 输出:404
4.keys() 获取所有的key值,以list形式返回
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
print a.keys()
# 输出:['a', 'c', 'b', 'd']
5.values() 获取所有的value值,以list形式返回
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
print str(a.values()).decode('string_escape')
# 输出: [123, 'pen', 456, '嘿嘿']
三.字典的遍历
1.判断是否存在该key
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
if 'a' in a:
print('yes')
# 输出:yes
2.遍历key,value值,无需转换成list
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
for k, v in a.items():
print str((k, v)).decode('string_escape')
# 输出:
# ('a', 123)
# ('c', 'pen')
# ('b', 456)
# ('d', '嘿嘿')
3.遍历每个键值对,无需转换成list
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
for kv in a.items():
print str(kv).decode('string_escape')
# 输出:
# ('a', 123)
# ('c', 'pen')
# ('b', 456)
# ('d', '嘿嘿')
4.遍历每个键值对,无需转换成list
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
for k in a:
print str((k, a[k])).decode('string_escape')
print str((k, a.get(k))).decode('string_escape')
# 输出:
# ('a', 123)
# ('a', 123)
# ('c', 'pen')
# ('c', 'pen')
# ('b', 456)
# ('b', 456)
# ('d', '嘿嘿')
# ('d', '嘿嘿')
五.修改字典
1.key存在即修改,key不存在即新增
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
a['e'] = 250
print str(a).decode('string_escape')
# 输出:{'a': 123, 'c': 'pen', 'b': 456, 'e': 250, 'd': '嘿嘿'}
a['a'] = "hehe"
print str(a).decode('string_escape')
# 输出:{'a': 'hehe', 'c': 'pen', 'b': 456, 'e': 250, 'd': '嘿嘿'}
2.setdefault只能用来新增
当用来修改时不起作用
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
a.setdefault('a', 250)
print str(a).decode('string_escape')
# 输出: {'a': 123, 'c': 'pen', 'b': 456, 'd': '嘿嘿'}
新增字典
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
a.setdefault('e', 250)
print str(a).decode('string_escape')
# 输出:{'a': 123, 'c': 'pen', 'b': 456, 'e': 250, 'd': '嘿嘿'}
不设默认值时,默认为None
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
a.setdefault('f')
print str(a).decode('string_escape')
# 输出:{'a': 123, 'c': 'pen', 'b': 456, 'e': 250, 'd': '嘿嘿', 'f': None}
3.将一个字典的键值对合并到另一个字典中
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
b = {'e': 250, 'f': 'hehe'}
a.update(b)
print str(a).decode('string_escape')
# 输出:{'a': 123, 'c': 'pen', 'b': 456, 'e': 250, 'd': '嘿嘿', 'f': 'hehe'}
六.删除字典
1.del函数删除
a = {'a': 123, 'b': 456, 'c': 'pen', 'd': '嘿嘿'}
del a["d"]
print a
# 输出:{'a': 123, 'c': 'pen', 'b': 456}
2.pop() 删除字典给定键 key 所对应的值,返回值为被删除的值,key值必须给出,否则,返回default值
a = {'a': 123, 'b': 456, 'c': 'pen'}
b = a.pop("a")
print a
# 输出:{'c': 'pen', 'b': 456}
print b
# 输出:123
3.popitem() 随机返回并删除字典中的一对键和值
a = {'a': 123, 'b': 456, 'c': 'pen'}
b = a.popitem()
print a
# 输出:{'c': 'pen', 'b': 456}
print b
# 输出:('a', 123)
4.clear()删除所有元素
a = {'a': 123, 'b': 456, 'c': 'pen'}
b = a.clear()
print a
# 输出:{}
七.常用方法
1. has_key() 函数用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false
a = {'a': 123, 'b': 456, 'c': 'pen'}
print a.has_key("a")
# 输出:True
2.items() 输出一个list格式
a = {'a': 123, 'b': 456, 'c': 'pen'}
print a.items()
# 输出:[('a', 123), ('c', 'pen'), ('b', 456)]
print(list(a.items()))
# 输出:[('a', 123), ('c', 'pen'), ('b', 456)]
3.len() 计算字典个数,即字典总数
a = {'a': 123, 'b': 456, 'c': 'pen'}
print len(a)
# 输出:3
4.str() 输出字典可打印的字符串
a = {'a': 123, 'b': 456, 'c': 'pen'}
print str(a)
print type(str(a))
# 输出:{'a': 123, 'c': 'pen', 'b': 456}
# 输出:<type 'str'>
5.使用json模块将字典与字符串的相互转化
5.1.字典转字符串
import json
a = {'a': 123, 'b': 456, 'c': 'pen'}
print json.dumps(a)
# 输出:{"a": 123, "c": "pen", "b": 456}
print type(json.dumps(a))
# 输出:<type 'str'>
5.2 字符串转字典
import json
a = '{"a": 123, "b": 456, "c": "pen"}'
print json.loads(a)
# 输出:{u'a': 123, u'c': u'pen', u'b': 456}
print type(json.loads(a))
# 输出:<type 'dict'>
八.复制
1.copy() 函数返回一个字典的浅复制
浅拷贝: 引用对象
浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
a = {'user': 'why', 'num': [1, 2, 3]}
b = a
c = a.copy()
# 修改 data 数据
a['user'] = 'root'
a['num'].remove(1)
print(a)
# # 输出:{'num': [2, 3], 'user': 'root'}
print(b)
# # 输出:{'num': [2, 3], 'user': 'root'}
print(c)
# # 输出:{'num': [2, 3], 'user': 'why'}
2.copy模块的deepcopy方法,完全拷贝了父对象及其子对象
import copy
a = {'user': 'why', 'num': [1, 2, 3]}
b = copy.deepcopy(a)
# 修改 data 数据
a['user'] = 'root'
a['num'].remove(1)
print a
# # 输出:{'num': [2, 3], 'user': 'root'}
print b
# 输出:{'num': [1, 2, 3], 'user': 'why'}