Python-字典

字典是无序的,字典是key-value结构,一个键对应一个值,key必须可hash,必须是唯一的,并且不可以变,value可以取任何数据类型,如字符串,数字或元组,可以是不唯一的

定义一个字典

>>> info = {'name':'John','age':22,'sex':'male'}
>>> info
{'name': 'John', 'sex': 'male', 'age': 22}
>>> info_1 = dict({'name':'Jane','age':25,'sex':'female'})
>>> info_1
{'name': 'Jane', 'sex': 'female', 'age': 25}
>>> info_2 = dict(name='Jack',age=23,sex='male')
>>> info_2
{'name': 'Jack', 'sex': 'male', 'age': 23}
>>> info_3 = dict((['name','Andy'],['age',18],['sex','male']))
>>> info_3
{'name': 'Andy', 'sex': 'male', 'age': 18}
>>> info_4 = {}.fromkeys(['name','age','sex'],'test') # 三个key都被赋值了同一个value
>>> info_4
{'name': 'test', 'sex': 'test', 'age': 'test'}

 获取字典中键值的情况

>>> info
{'name': 'John', 'sex': 'male', 'age': 22}
>>> info.keys() # 获取字典中的所有key
dict_keys(['name', 'sex', 'age'])
>>> info.values() # 获取字典中所有的value
dict_values(['John', 'male', 22])
>>> info.items() # 获取字典中所有的键值对
dict_items([('name', 'John'), ('sex', 'male'), ('age', 22)])

 获取字典的长度,即键值对的个数

>>> info
{'name': 'John', 'sex': 'male', 'age': 22}
>>> len(info)
3

 添加字典的键值对

>>> info
{'name': 'John', 'sex': 'male', 'age': 22}
>>> info['Nationality'] = 'China' # 直接通过新的键值对来添加
>>> info
{'name': 'John', 'sex': 'male', 'Nationality': 'China', 'age': 22}
>>> info.setdefault('age', 12) # 如果key存在的话就不会添加
22
>>> info
{'name': 'John', 'sex': 'male', 'Nationality': 'China', 'age': 22}
>>> info.setdefault('Language', 'Chinese') # 如果key不存在的话,会添加一个新的键值对
'Chinese'
>>> info
{'Language': 'Chinese', 'name': 'John', 'sex': 'male', 'Nationality': 'China', 'age': 22}

 获取字典中的value

>>> info
{'name': 'John', 'sex': 'male', 'age': 22}
>>> info['name']  # 直接通过key查看对应的value
'John'
>>> info.get('age')  # 通过get方法来获取对应的value值
22
>>> info.get('age1',"Can't find age1")  # 如果get方法中的key不存在,就会返回设定的默认值
"Can't find age1"

 修改字典中key的value值

>>> info
{'name': 'John', 'sex': 'male', 'age': 22}
>>> info['sex'] = 'female'
>>> info
{'name': 'John', 'sex': 'female', 'age': 22}

 把一个字典的内容添加到另一个字典里

>>> info
{'name': 'John', 'sex': 'female', 'age': 22}
>>> info1
{'Nationality': 'China', 'Language': 'Chinese'}
>>> info.update(info1)  # 把info1字典里的内容添加到info里
>>> info
{'name': 'John', 'sex': 'female', 'Nationality': 'China', 'Language': 'Chinese', 'age': 22}

 字典的删除操作

>>> info
{'name': 'John', 'sex': 'male', 'age': 22}
>>> info.pop('sex')  # 使用pop方法通过key删除
'male'
>>> info.pop('age1',"Can't find age1")  # 如果没有key的话,就返回设定的默认值
"Can't find age1"
>>> del info['age']  # 直接用del删除
>>> info
{'name': 'John'}

>>> info = {'name':'John','age':22,'sex':'male'}
>>> info.popitem()  # 随机删除字典中的一个键值对
('name', 'John')
>>> info.popitem()
('sex', 'male')
>>> info.popitem()
('age', 22)
>>> info.popitem()  # 如果字典为空,使用popitem方法就会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'popitem(): dictionary is empty'

>>> info = {'name':'John','age':22,'sex':'male'}
>>> info.clear()  # 清空字典中所有的键值对
>>> info
{}

 字典的复制

>>> info
{'name': 'John', 'sex': 'male', 'age': 22}
>>> info_1 = info  # 通过赋值来复制,如果原字典发生改变,复制的字典也会发生改变
>>> info_1
{'name': 'John', 'sex': 'male', 'age': 22}
>>> info['Nationality'] = 'China'
>>> info
{'name': 'John', 'sex': 'male', 'Nationality': 'China', 'age': 22}
>>> info_1
{'name': 'John', 'sex': 'male', 'Nationality': 'China', 'age': 22}

>>> info
{'name': 'John', 'sex': 'male', 'age': 22}
>>> info_1 = info.copy()  # 深度copy,原字典发生改变,复制的字典不会发生改变,两个字典变得没有关系了
>>> info_1
{'name': 'John', 'sex': 'male', 'age': 22}
>>> info['Nationality'] = 'China'
>>> info
{'name': 'John', 'sex': 'male', 'Nationality': 'China', 'age': 22}
>>> info_1
{'name': 'John', 'sex': 'male', 'age': 22}

 

posted @ 2018-03-11 16:06  Sch01aR#  阅读(233)  评论(0编辑  收藏  举报