什么是字典?
--key -value 的数据类型,找到key就可以找到对应的值
--字典形式:{key1:value1,key2:value2,......}
#!/usr/bin/python3 dict_1 = {', 'phone_number': '155-7777-7777'}
-- 字典嵌套使用:{key:{key,value},......}
city = {'湖南': {'长沙': '省会城市', '衡阳': '湖南第二大城市'}, }
-- 判断key是否在字典中 : key in dic #在返回True,不存在返回False
#!/usr/bin/python3 dict_1 = {', 'phone_number': '155-7777-7777'} try: if 'name' in dict_1: print(dict_1['name']) except Exception as e: print(e)
字典有哪些特性?
--无序,why? 字典中通过key找到值,不需要记住位置
-- key值唯一,天生去重
字典中有哪些操作?
- 查
dic[key] -- 查看key对应的value,不存在key出错
#!/usr/bin/python3 dict_1 = {', 'phone_number': '155-7777-7777'}try: print(dict_1['呵呵']) except KeyError as e: # 触发key异常 print(e)
dic.get(key) -- 有key对应value,返回,没有返回none
#!/usr/bin/python3 dict_1 = {', 'phone_number': '155-7777-7777'} try: print(dict_1.get('呵呵')) # 没有返回None except KeyError as e: # 触发key异常 print(e)
- 改
dic[‘key’] =‘value’ -- key存在则改value,不存在则添加进去
#!/usr/bin/python3 dict_1 = {', 'phone_number': '155-7777-7777'} city = {'湖南': {'长沙': '城市', '衡阳': '湖南第二大城市'}, } try: dict_1['name'] = '北门吹雪' # 修改value print(dict_1) dict_1['sex'] = '保密' # 没有添加 sex:保密 键值对 print(dict_1) except Exception as e: # 触发key异常 print(e)
- 增
- 删
del dic -- 把字典全删了
del dic[key] -- 删除对应的key和value
dic.pop(key) -- 删除指定的值,key必须写,返回key对应的value
#!/usr/bin/python3 dict_1 = {', 'phone_number': '155-7777-7777'} try: del dict_1['name'] # 删除 'name': '一枝花' print(dict_1) result = dict_1.pop('age') # 取出'age'对应的'18'返回 print(result) del dict_1 # 把字典删除了 print(dict_1) # 触发字典没有定义异常 except Exception as e: # 触发异常 print(e)
- 更新
dic.update(dic2) -- 用dic2字典去更新dic字典,key不同则合并,key相同dic2的value覆盖dic的value
#!/usr/bin/python3 dict_1 = {', 'phone_number': '155-7777-7777'} city = {'湖南': {'长沙': '城市', '衡阳': '湖南第二大城市'}, 'name':'北门吹雪' } try: dict_1.update(city) # 用city字典去更新dict_1字典 print(dict_1) except Exception as e: # 触发异常 print(e)
- 复制
--.copy() -- 和列表一样,浅浅拷贝,大坑
#!/usr/bin/python3 dict_1 = {', 'phone_number': '155-7777-7777'} city = {'湖南': {'长沙': '湖南第一大城市', '衡阳': '湖南第二大城市'}, 'name':'北门吹雪' } try: city_2 = city.copy() city_2['name'] = '西门吹风' # 更改city_2一层的数据 city_2['湖南']['长沙'] = '全国知名城市' # 更改city_2嵌套的数据 print('city:', city) # 一层不随着更改 print('city_2:', city_2) # 二层随着更改,大坑 except Exception as e: # 触发异常 print(e)
如何查看字典单边值?
- dic.key() -- 打印所有key
- dic.value() -- 打印所有的value
- dic.setdefault(key,value) --先去取key对应的值,没有则创建
#!/usr/bin/python3 dict_1 = {', 'phone_number': '155-7777-7777'} city = {'湖南': {'长沙': '湖南第一大城市', '衡阳': '湖南第二大城市'}, 'name':'北门吹雪' } try: print('key:', city.keys()) print('value:', city.values()) result = dict_1.setdefault('phone_number', '呵呵') # 有获得value print(result) result = dict_1.setdefault('phone', '安卓') # 没有获得 安卓 ,并添加'phone': '安卓' 键值对到dict_1字典中 print(result) print(city) except Exception as e: # 触发异常 print(e)