4.5. 字典

字典和列表一样,是python里面非常重要的一个基础数据结构,通俗的理解,字典就像其名一样,一个单词对应一个解释,如’a’:’我是小a’,’lvjj’:我是lvjj,字典对象里可以包含0个或多个键值对(key-value)

4.5.1. 定义一个字典

有两种方式可以定义字典:

d1 = {'name': 'lvjj'}
d2 = dict(name='lvjj')

print(d1)
print(d2)

输出为:

{'name': 'lvjj'}
{'name': 'lvjj'}

4.5.2. 添加元素

d1 = {}
d1['a'] = 1
print(d1)

d2 = {}
d2.update(b=2)
print(d2)

4.5.3. 取值

d1 = {'a': 1, 'b': 2}
print(d1['a'])
print(d1['c'])

输出为:

1
Traceback (most recent call last):
  File "C:/Documents and Settings/Administrator/PycharmProjects/study/demo2.py", line 5, in <module>
    print(d1['c'])
KeyError: 'c'

除了使用[]取值外,还可以使用get,并且设置默认值:

d1 = {'a': 1, 'b': 2}
print(d1.get('a'))
print(d1.get('c', 0))

输出为:

1
0

4.5.4. 取出字典的key到列表

d1 = {'a': 1, 'b': 2}
print(d1.keys())

输出为:

['a', 'b']

4.5.5. 取出字典的value到列表

d1 = {'a': 1, 'b': 2}
print(d1.values())

输出为:

[1, 2]

4.5.6. 取出字典的键值对为到列表

d1 = {'a': 1, 'b': 2}
print(d1.items())

输出为:

[('a', 1), ('b', 2)]

4.5.7. 遍历字典的键值对

d1 = {'a': 1, 'b': 2}
for k, v in d1.items():
    print('key: %s, key: %s' % (k, v))

输出为:

key: a, key: 1
key: b, key: 2

4.5.8. 判断某个key是否在字典中

d1 = {'a': 1, 'b': 2}
print('a' in d1)
print('c' in d1)

输出为:

True
False

删除某个key:

d1 = {'a': 1, 'b': 2}
d1.pop('a')
print(d1)
输出为::
{‘b’: 2}

4.5.9. get()方法

dict.get(key, default=None)

key – 字典中要查找的键。 default – 如果指定键的值不存在时,返回该默认值。

dict_test = {'key1': 'v1'}
print('key1 = ', dict_test.get('key1', 'default_v'))
print('key2 = ', dict_test.get('key2', 'default_v'))

输出结果为:

key1 =  v1
key2 =  default_v

4.5.10. setdefault()方法

dict.setdefault(key, default=None)

key – 查找的键值。 default – 键不存在时,设置的默认键值。

与get不同的是,setdefault在没有找到key的时候,会将对于对于的key和default的值,加入到dict里

dict_test = {'key1': 'v1'}
print("key2 = ", dict_test.setdefault('key2', 'v2'))
print(dict_test)

输出结果为:

key2 =  v2
{'key1': 'v1', 'key2': 'v2'}

4.5.11. update()方法

在执行 update() 方法时,如果被更新的字典中己包含对应的键值对,那么原value 会被覆盖;如果被更新的字典中不包含对应的键值对,则该键值对被添加进去。

dict_test = {'one': 1, 'two': 2, 'three': 3}
dict_test.update({'one':4.5, 'four': 9.3})
print(dict_test)

输出结果为:

{'one': 4.5, 'two': 2, 'three': 3, 'four': 9.3}