Python 字典总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 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'}

猜你喜欢

转载自blog.csdn.net/xyy1028/article/details/84981446