字典
如果大家看过以前我写的内容就会知道有列表 但是既然有了列表,因为你存储的内容有五花八门的,如果你想为你存储的内容起个NB的名字的时候你该怎么存储呢? 这个时候烦人的字典就又来了(是不死有人会说 怎么这么烦人还要学习这么多的知识点 慢慢来 你会发现学的会更多)
字典的key必须是不可变类型也就是字典的key只可以用元组 int str forzenset的集合
字典常用方法
增加:
第一种 直接增加key值进行赋值来增加元素 有则覆盖 无则添加
info_dic = {'name':'honglingjing', 'sge':18 , 'sex':'男'} info_dic['eat'] = '吃' print(info_dic)
setdefault----> 如果有key就不变 没有就添加
info_dic = {'name':'honglingjing', 'sge':18 , 'sex':'男'} info_dic.setdefault('name','laowang') #把name的变量添加到字典中 setdefault 是把键值对添加到一个字典中 如果字典中有这个key值就不覆盖 print(info_dic)
update------> 把两个字典相加 覆盖
info_dic = {'name':'honglingjing', 'sge':18 , 'sex':'男'} info = {'name':'王', 'age':17, 'hobby':'吃饭'} info_dic.update(info) #把括号内的字典info 覆盖到info_dic中 并且info_dic的其他多余的内容还保存不变 print(info_dic)
删除:
pop clear del
pop 删除
dic.pop('hobby') print(dic) #报错 print(dic.pop('hobby',None))
clear 是清空字典
del是删除整个字典 也可以指定key值来删除
dic = {"name":"jin", "age":18, "sex":"male", } del dic['name'] #可以指定key值来删除 print(dic)
dic = {"name":"jin", "age":18, "sex":"male", } # del dic['name'] #可以指定key值来删除 # print(dic) print(dic['name']) # print(dic['name1']) #报错 print(dic.get('name')) #用get来查找 print(dic.get('age1')) #默认返回值是None print(dic.get('name1','没有这个值')) #y也可定义返回的值
get()----->查找 查找指定的元素
把下面列表用字典的get()大于66的和小于66的分开放在字典中:
li= [11,22,33,44,55,66,77,88,99,90] dic = {} for i in li: if i > 66: if dic.get('k1'): dic['k1'].append(i) else: dic['k1'] = [i] elif i < 66: if dic.get('k2'): dic['k2'].append(i) else: dic['k2'] = [i] print(dic)
keys()----->查找字典内所有的key:
我们如果想单独的查找字典内的key的值 我们可以用到keys() 方法 就是寻找 字典中的所有的key键
dic = {"name":"jin", "age":18, "sex":"male", } print(dic.keys()) #查找字典中所有的key
values()------>查找字典内所有的值value:
dic = {"name":"jin", "age":18, "sex":"male", } print(dic.values())
items() ------>查找字典内的键值对: (几乎都是配合for循环来实现的)
dic = {"name":"jin", "age":18, "sex":"male", } print(dic.items())
formkeys();就是你可以把一个可迭代对象设置成一个字典的key 这个可迭代对象的所有元素都和这个value对应,就是通过fromkeys()转化后可迭代对象中的每一个元素所对应的value都相同
i = [1, 2, 4] l = {} l = l.fromkeys(i) print(l){1: None, 2: None, 4: None}
就是创建的字典的中key可以不同但是指向的value是同一个内存地址的
v = dict.fromkeys(['k1','k2'],[]) # 创建的 字典key是k1 和k2 但是value都是[] print(v) # {'k1': [], 'k2': []} v['k1'].append(666) # {'k1': [666], 'k2': [666]} print(v) v['k1'] = 777 print(v) # {'k1': 777, 'k2': [666]}
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法fromkeys() #fromkeys() #说明:用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值 ''' >>> help(dict.fromkeys) Help on built-in function fromkeys: fromkeys(...) dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v. v defaults to None. ''' #案例 d=[1,2,3] dict={} dict=dict.fromkeys(d) print dict #{1: None, 2: None, 3: None} dict=dict.fromkeys(d,'xiaodeng') #xiaodeng为默认值 print dict #{1: 'xiaodeng', 2: 'xiaodeng', 3: 'xiaodeng'}