python基础五-字典

字典
:字典是python的基础数据类型之一:字典可以存储大量的数据,关系型数据。
同样他也是python中唯一的映射类的数据类型。
数据类型的分类:
可变的(不可哈希)数据类型:list,dict
不可变的(可哈希的)数据类型:str,int,bool,tuple
dic = {"name":"jin","age":18,"sex":"male"}
键值对的形式存在的, 键: 值
字典的键KEY必须是不可变的数据类型。(工作中:都是由 数字,或者str组成)
字典的值value是任意数据类型。
优点:
字典可以存储大量的数据,关系型数据。
查询速度快。
python3.5之前包括3.5版本,字典是无序的。
python3.6开始,是有序的

字典的增删改查
字典创建方法
1.直接创建
dic ={1:2,3:4}
print(dic)

2.dict()方法
dic2 = dict({'a':'b'})
print(dic2)

3.dict--关键字形式       

复制代码代码如下:

 代码比较少,但键必须为字符串型。常用于函数赋值
 D3 = dict(name='Bob',age=45)  

4.dict--键值序列 

如果需要将键值逐步建成序列,则此方式比较有用,常与zip函数一起使用
 D4 = dict([('name','Bob'),('age',40)])  
复制代码代码如下:
 D = dict(zip(('name','bob'),('age',40)))  
 
5. dict.formkeys()方法
dic3 = dict.fromkeys([1,2,3,4],[9,8,7,6])     #fromkeys(key,value)key为可迭代对象teriable,vuale可以是任意值
但vuale为可变数据类型(list,dict)则生产的字典每个key都指向这个可变对象,
只要有一个值发生改变,全部字典的值也全部发生改变
print(dic3)         

增:
1.直接增加(如果dic(key)中的key不存在则新增,如果字典中该key存在则修改)
dic ={}
dic['a'] =1
print(dic)
2.dic.setdefault(key,default) 如果该key不存在则新增值为default,如果该key存在则不做任何操作
dic.setdefault('b',2)
dic.setdefault('a',6)
print(dic)

删:
dic = {1:2,3:4,5:6,7:8}
1.del dic[key] 根据key键删除字典中的键值对,或者直接不跟dic键删除整个字典(删除整个对象)
del dic[5]
del dic
print(dic)

2.dic.pop(key,default)根据key键删除字典中的键值对,有返回值,如果key存在则返回key对应的值。如果key不存在则返回default
当删除的key不在时默认又没有加default参数则会报错
print(dic.pop(1))
print(dic.pop('r'))
print(dic.pop('r',None))

3.dic.popitem()在python3.5之前是随机删除,在pytho3.6之后是默认删除最后一个键值对,有返回值,返回值为一个元祖(key,value)
print(dic.popitem())
print(dic)

4.clear(),清空字典
dic.clear()
print(dic)



dic = {1:2,"a":4,5:6,7:8}
1.dic[1] ='a'直接修改
dic[1] ='a'
print(dic)

2.dic.update(kwargs=)kwargs可以是一个字典,如果字典则用该字典跟新原字典;kwargs还可以是一组键值 key='value'如果key存在则跟新,
不存在则新增,但这种方式新增key只能是一个变量型
dic.update(a='2',b="90",_=1)
print(dic)

dic = {"name":"jin","age":18,"sex":"male"}
# dic2 = {"name":"alex","weight":75}
# dic.update(dic2) # 将dic2中的所有键值对覆盖并添加到dic中,dic2 不变。
# print(dic)
# print(dic2)
dic.update(a='666',b='222',name='taibai')
print(dic)

查:
dic = {1:2,"a":4,5:6,7:8}
1.直接查询dic[key]
print(dic['a'])

2.dic.get(key,default) 通过key查询值,当key存在返回该key对应的value;当key不存在则返回none,若果加defalut则返回default的值
print(dic.get('a'))
print(dic.get(8))
print(dic.get(8,'空值'))

3.dic.keys()查询dic的键,可以转化为list
print(list(dic.keys()))

4.dic.values()查询dic的值,可以转化为list
print(list(dic.values()))

5.dic.items()查询dic的键值对,可以转化为list
print(list(dic.items()))

分别赋值
a,b = 10,20
print(a,b)
a,b = [10,20]
print(a,b)
a,b = [(1,2),(3,4)]
print(a,b)
a = 10
b = 20
a,b = b,a
print(a,b)

for i in dic.items():
'''
i = ('name', '太白')
i = ('age', 18)
....
'''
print(i)

for k,v in dic.items():
'''
k,v = ('name', '太白')
k,v = ('age', 18)
....
'''
print(k,v)

for i in dic:
print(i)
dict
print(len(dic))

字典嵌套实例
dic = {'name_list': ['王双', 'alex', '孙飞', 'taibai'],
1: {'name': 'taibai', 'age': 18, 'sex': '男'},
(1, 2): [100, {'ip': '192.168.1.1', 'port': 3306}]
}
1,给 name_list对应的列表追加一个值: 司徒大人.
print(dic['name_list'])
dic['name_list'].append('司徒大人')
print(dic)

2,将name_list对应的alex 变成全部大写.
dic['name_list'][1] = 'ALEX'
dic['name_list'][1] = dic['name_list'][1].upper()
print(dic)
3, 将1对应的字典添加一个键值对: weight : 75
print(dic[1])
dic[1]['weight'] = 75
print(dic)
4,将1 对应的字典的name键对应的名字taibai 换成alex
dic[1]['name'] = 'alex'
print(dic)
5,将 {'ip': '192.168.1.1', 'port': 3306} 此字典的port键值对删除.
posted @ 2018-08-12 22:05  麒麟610  阅读(193)  评论(0编辑  收藏  举报