字典(dictionary)是除列表之外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取,这个键可以是数字、字符串甚至元组。映射可以使用任何不可变对象标识元素,最常用的类型是字符串和元组,python唯一内建的映射类型是字典。
语法:
>>> info = {... 'stu1101': "TengLan Wu",... 'stu1102': "LongZe Luola",... 'stu1103': "XiaoZe Maliya",... }
字典的特性:
- dict是无序的
- key必须是唯一的,天生去重
增加
>>> info["stu1104"] = "wangzhaoyang">>> info{ 'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1104': 'wangzhaoyang'}
修改
>>> info["stu1101"] = "ligang">>> info{ 'stu1101': 'ligang', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1104': 'wangzhaoyang'}
删除
>>> info{ 'stu1101': 'ligang', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1104': 'wangzhaoyang'}>>> info.pop("stu1102") #常用删除方法'LongZe Luola'>>> info{ 'stu1101': 'ligang', 'stu1103': 'XiaoZe Maliya', 'stu1104': 'wangzhaoyang'}>>> del info["stu1103"]>>> info{ 'stu1101': 'ligang', 'stu1104': 'wangzhaoyang'}
>>> info
{'stu1101': 'ligang', 'stu1104': 'wangzhaoyang', 'stu1102': 'zhanglei'} >>> info.pop info.pop( info.popitem( >>> info.popitem() ###随机删除 ('stu1102', 'zhanglei') >>> info {'stu1101': 'ligang', 'stu1104': 'wangzhaoyang'}查找
>>> info{ 'stu1101': 'ligang', 'stu1104': 'wangzhaoyang', 'stu1102': 'zhanglei', 'stu1103': 'liyang'}>>> "stu1102" in infoTrue>>> info.get("stu1101")'ligang'>>> info.get("stu1105") ##get查找,如果存在则返回,不存在不会报错>>> info["stu1101"]'ligang'>>> info["stu1105"] #存在则返回,不存在则报错Traceback (most recent call last): File "", line 1, in KeyError: 'stu1105'
items #将一个字典转换为元组
>>> info.items()dict_items([('stu1101', 'ligang'), ('stu1104', 'wangzhaoyang'), ('stu1102', 'zhanglei'), ('stu1103', 'liyang')])
key values
#values>>> info.values()dict_values(['LongZe Luola', 'XiaoZe Maliya'])#keys>>> info.keys()dict_keys(['stu1102', 'stu1103'])
多级嵌套
people ={ 'Jason':{ 'phone':'2341', 'addr':'Foo drive 23' }, 'James':{ 'phone':'4564', 'addr':'Bar street 42' }, 'Jzhou':{ 'phone':'4564', 'addr':'Baz avenue 90' } }
people["James"]["phone"] = "10000">>> people{ 'Jason': { 'phone': '2341', 'addr': 'Foo drive 23'}, 'James': { 'phone': '10000', 'addr': 'Bar street 42'}, 'Jzhou': { 'phone': '4564', 'addr': 'Baz avenue 90'}}
循环字典
#方法1for key in info: print(key,info[key])#方法2for k,v in info.items(): #会先把dict转成list,数据里大时莫用 print(k,v)