python字典操作keys(python字典常用操作)
Python 字典(dic)操作
具体函数有 set(),pop(),update(),items(),keys(),values(),get(),setdefault()
python 字典操作
假设字典为 dics = {0:'a', 1:'b', 'c':3}
二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:
print dics.get('a')
print dics.get('Paul')
None
dict.get(key,default=None) 两个选项 一个 key 一个 default= None ----default可以是任何strings(字符)
2.从字典中取值,若找到则删除;当键不存在时,显示异常key error
[方法]? dics.pop('key')
3.给字典添加一个条目。如果不存在,就指定特定的值;若存在,就算了。
[方法] dic.setdefault(key, value)
4. update
a = {'a':1,'b':2}
a.update({'c':3})
a
{'a': 1,'c': 3,'b': 2}
a.update({'c':4})
a
{'a': 1,'c': 4,'b': 2}
dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。
有的时候,我们只想要 dict 的 key,不关心 key 对应的 value,目的就是保证这个集合的元素不会重复,这时,set就派上用场了。
python自学笔记13:元组和字典的操作
定义元组(tuple):
t1=(1,2,3,4)#多个数据元组
t2=(1,)#如果元组内只有一个数据,也需要手逗号隔开,否则这个数据将是他本身的类型。
元组的操作:
元组类型数据不支持修改,可查找
查找:
按下标查找:
print(t1[1])
函数查找:
print(t1.index(1))返回对应下标,如果数据不存在,程序将报错
print(t1.count(1))统计数据在元组当中出现的次数
print(len(t1))统计元组当中的数据个数
注意:当元组内嵌套列表数据,可以通过下标的方法对列表数据进行修改如:
t3=(1,2,["a","b"])
t3[2][0]=c #t3的值将变为(1,2,["c","b"])
——————————————————
——————————————————
定义字典(dict)
字典的特点
1:符号为{}
2:数据为键(key)值(value)对形式,每个键值对之间用逗号隔开如:
dict1={"name":"小明","age":18,"gender:男"}
字典的操作:
dict1["name"]="小红"
dict1["id"]=3
如果key存在,将修改其所对应的值。如果不存在,将在字典最后添加该键值对
2.删除数据
del():删除字典或删除字典内的键值对
del dict1["name"] 删除字典内的键值对,如果删除的key不存在,程序将会报错
del(del)删除字典
clear(dict1) 清空字典
3.查找数据
一.按照key进行查找,最后返回相对应的值
二.按函数进行查找:
(1) get(key,默认值):
如果查找的key不存在则返回所写的默认值,如果不写默认值则返回None
dict1={"name":"小明","age":18,"gender:男"}
print(dict1.get("name")) #小明
print(dict1.get("id",110)) # 110
——————————————————
(2) keys():返回字典内的所有key 可用for遍历
print(dict1.keys())
返回 ["name","age","gender"]
for key in dict1.keys():
..print(key)
逐行输出name age gender
——————————————————
(3) values(): 返回字典内的值 可用for遍历
print(dict1.values())
返回["小明",18,"男"]
for value dict1.values():
..print(value)
逐行输出小明 18 男
——————————————————
(4) items():将字典内的数据以元组的形式返回
print(dict1.items()) 可用for遍历
返回[("name","小明"),("age",18),("gender","男")]
for item in dict1.items():
..print(item)
逐行输出 ("name","小明") ("age",18)("gender","男")
——————————————————
遍历字典键值对(拆包) 可在for内使用两个临时变量
dict1={"name":"小明","age":18,"gender:男"}
for key,value in dict1.items():
..print(f"{key}=value")
逐行输出:
name=小明 age=18 gender=男
python字典操作函数
字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一内建的映射类型,基本的操作包括如下:
(1)len():返回字典中键—值对的数量;
(2)d[k]:返回关键字对于的值;
(3)d[k]=v:将值关联到键值k上;
(4)del d[k]:删除键值为k的项;
(5)key in d:键值key是否在d中,是返回True,否则返回False。
(6)clear函数:清除字典中的所有项
(7)copy函数:返回一个具有相同键值的新字典;deepcopy()函数使用深复制,复制其包含所有的值,这个方法可以解决由于副本修改而使原始字典也变化的问题
(8)fromkeys函数:使用给定的键建立新的字典,键默认对应的值为None
(9)get函数:访问字典成员
(10)has_key函数:检查字典中是否含有给出的键
(11)items和iteritems函数:items将所有的字典项以列表方式返回,列表中项来自(键,值),iteritems与items作用相似,但是返回的是一个迭代器对象而不是列表
(12)keys和iterkeys:keys将字典中的键以列表形式返回,iterkeys返回键的迭代器
(13)pop函数:删除字典中对应的键
(14)popitem函数:移出字典中的项
(15)setdefault函数:类似于get方法,获取与给定键相关联的值,也可以在字典中不包含给定键的情况下设定相应的键值
(16)update函数:用一个字典更新另外一个字典
(17)?values和itervalues函数:values以列表的形式返回字典中的值,itervalues返回值得迭代器,由于在字典中值不是唯一的,所以列表中可以包含重复的元素
一、字典的创建
1.1 直接创建字典
d={'one':1,'two':2,'three':3}
printd
printd['two']
printd['three']
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'three':3,'two':2,'one':1}
1.2 通过dict创建字典
# _*_ coding:utf-8 _*_
items=[('one',1),('two',2),('three',3),('four',4)]
printu'items中的内容:'
printitems
printu'利用dict创建字典,输出字典内容:'
d=dict(items)
printd
printu'查询字典中的内容:'
printd['one']
printd['three']
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
items中的内容:
[('one',1), ('two',2), ('three',3), ('four',4)]
利用dict创建字典,输出字典内容:
{'four':4,'three':3,'two':2,'one':1}
查询字典中的内容:
或者通过关键字创建字典
# _*_ coding:utf-8 _*_
d=dict(one=1,two=2,three=3)
printu'输出字典内容:'
printd
printu'查询字典中的内容:'
printd['one']
printd['three']
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
输出字典内容:
{'three':3,'two':2,'one':1}
查询字典中的内容:
二、字典的格式化字符串
# _*_ coding:utf-8 _*_
d={'one':1,'two':2,'three':3,'four':4}
printd
print"three is %(three)s."%d
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'four':4,'three':3,'two':2,'one':1}
threeis3.
三、字典方法
3.1?clear函数:清除字典中的所有项
# _*_ coding:utf-8 _*_
d={'one':1,'two':2,'three':3,'four':4}
printd
d.clear()
printd
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'four':4,'three':3,'two':2,'one':1}
{}
请看下面两个例子
3.1.1
# _*_ coding:utf-8 _*_
d={}
dd=d
d['one']=1
d['two']=2
printdd
d={}
printd
printdd
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'two':2,'one':1}
{}
{'two':2,'one':1}
3.1.2
# _*_ coding:utf-8 _*_
d={}
dd=d
d['one']=1
d['two']=2
printdd
d.clear()
printd
printdd
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'two':2,'one':1}
{}
{}
3.1.2与3.1.1唯一不同的是在对字典d的清空处理上,3.1.1将d关联到一个新的空字典上,这种方式对字典dd是没有影响的,所以在字典d被置空后,字典dd里面的值仍旧没有变化。但是在3.1.2中clear方法清空字典d中的内容,clear是一个原地操作的方法,使得d中的内容全部被置空,这样dd所指向的空间也被置空。
3.2?copy函数:返回一个具有相同键值的新字典
# _*_ coding:utf-8 _*_
x={'one':1,'two':2,'three':3,'test':['a','b','c']}
printu'初始X字典:'
printx
printu'X复制到Y:'
y=x.copy()
printu'Y字典:'
printy
y['three']=33
printu'修改Y中的值,观察输出:'
printy
printx
printu'删除Y中的值,观察输出'
y['test'].remove('c')
printy
printx
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
初始X字典:
{'test': ['a','b','c'],'three':3,'two':2,'one':1}
X复制到Y:
Y字典:
{'test': ['a','b','c'],'one':1,'three':3,'two':2}
修改Y中的值,观察输出:
{'test': ['a','b','c'],'one':1,'three':33,'two':2}
{'test': ['a','b','c'],'three':3,'two':2,'one':1}
删除Y中的值,观察输出
{'test': ['a','b'],'one':1,'three':33,'two':2}
{'test': ['a','b'],'three':3,'two':2,'one':1}
注:在复制的副本中对值进行替换后,对原来的字典不产生影响,但是如果修改了副本,原始的字典也会被修改。deepcopy函数使用深复制,复制其包含所有的值,这个方法可以解决由于副本修改而使原始字典也变化的问题。
# _*_ coding:utf-8 _*_
fromcopyimportdeepcopy
x={}
x['test']=['a','b','c','d']
y=x.copy()
z=deepcopy(x)
printu'输出:'
printy
printz
printu'修改后输出:'
x['test'].append('e')
printy
printz
运算输出:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
输出:
{'test': ['a','b','c','d']}
{'test': ['a','b','c','d']}
修改后输出:
{'test': ['a','b','c','d','e']}
{'test': ['a','b','c','d']}
3.3?fromkeys函数:使用给定的键建立新的字典,键默认对应的值为None
# _*_ coding:utf-8 _*_
d=dict.fromkeys(['one','two','three'])
printd
运算输出:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'three':None,'two':None,'one':None}
或者指定默认的对应值
# _*_ coding:utf-8 _*_
d=dict.fromkeys(['one','two','three'],'unknow')
printd
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'three':'unknow','two':'unknow','one':'unknow'}
3.4?get函数:访问字典成员
# _*_ coding:utf-8 _*_
d={'one':1,'two':2,'three':3}
printd
printd.get('one')
printd.get('four')
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'three':3,'two':2,'one':1}
1
None
注:get函数可以访问字典中不存在的键,当该键不存在是返回None
3.5?has_key函数:检查字典中是否含有给出的键
# _*_ coding:utf-8 _*_
d={'one':1,'two':2,'three':3}
printd
printd.has_key('one')
printd.has_key('four')
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'three':3,'two':2,'one':1}
True
False
3.6?items和iteritems函数:items将所有的字典项以列表方式返回,列表中项来自(键,值),iteritems与items作用相似,但是返回的是一个迭代器对象而不是列表
# _*_ coding:utf-8 _*_
d={'one':1,'two':2,'three':3}
printd
list=d.items()
forkey,valueinlist:
??printkey,':',value
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'three':3,'two':2,'one':1}
three :3
two :2
one :1
# _*_ coding:utf-8 _*_
d={'one':1,'two':2,'three':3}
printd
it=d.iteritems()
fork,vinit:
??print"d[%s]="%k,v
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'three':3,'two':2,'one':1}
d[three]=3
d[two]=2
d[one]=1
3.7?keys和iterkeys:keys将字典中的键以列表形式返回,iterkeys返回键的迭代器
# _*_ coding:utf-8 _*_
d={'one':1,'two':2,'three':3}
printd
printu'keys方法:'
list=d.keys()
printlist
printu'\niterkeys方法:'
it=d.iterkeys()
forxinit:
??printx
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'three':3,'two':2,'one':1}
keys方法:
['three','two','one']
iterkeys方法:
three
two
one
3.8?pop函数:删除字典中对应的键
# _*_ coding:utf-8 _*_
d={'one':1,'two':2,'three':3}
printd
d.pop('one')
printd
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'three':3,'two':2,'one':1}
{'three':3,'two':2}
3.9?popitem函数:移出字典中的项
# _*_ coding:utf-8 _*_
d={'one':1,'two':2,'three':3}
printd
d.popitem()
printd
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'three':3,'two':2,'one':1}
{'two':2,'one':1}
3.10?setdefault函数:类似于get方法,获取与给定键相关联的值,也可以在字典中不包含给定键的情况下设定相应的键值
# _*_ coding:utf-8 _*_
d={'one':1,'two':2,'three':3}
printd
printd.setdefault('one',1)
printd.setdefault('four',4)
printd
运算结果:
{'three':3,'two':2,'one':1}
{'four':4,'three':3,'two':2,'one':1}
3.11?update函数:用一个字典更新另外一个字典
# _*_ coding:utf-8 _*_
d={
??'one':123,
??'two':2,
??'three':3
??}
printd
x={'one':1}
d.update(x)
printd
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
{'three':3,'two':2,'one':123}
{'three':3,'two':2,'one':1}
3.12?values和itervalues函数:values以列表的形式返回字典中的值,itervalues返回值得迭代器,由于在字典中值不是唯一的,所以列表中可以包含重复的元素
# _*_ coding:utf-8 _*_
d={
??'one':123,
??'two':2,
??'three':3,
??'test':2
??}
printd.values()
运算结果:
=======RESTART: C:\Users\Mr_Deng\Desktop\test.py=======
[2,3,2,123]
python-字典
1、字典:
? ? ? 两大特点:无序,键唯一
? ? ? 无序存储,键值对的形式存储数据
? 键是唯一不可修改的,不能用列表做键
2、python中不可变类型:整形,字符串,元组
? ? 可变类型:字典,列表
3、字典中方法:
增加:
dic1 = {'name':'alex'}
dic1 = ['age'] =18
*dic1 = {'age':18,'name':'alex'}
? ? ? dic1.setdefault() 键存在,不改动,返回字典相应键对应的值,键不存在,在字典中增加新的键值对,并返回相应的值
查找:
? ? ? ? 通过键查找
? ? ? ? ? dic1.keys()打印字典中所有键?
? #dict1.keys['name','age']? --转换成列表:list(dic1.keys())
? ? ? ? ? dic1.values()打印字典中所有值
? ? ? ? ? dic1.items()打印所有键值对
修改:
? ? ? ? ? 直接赋值
dic3= {'name':'alex','age':18}
dic4 = {'sex':'male','age':36}
? ? ? ? ? dic3.update(dic4)? ? #有相同的key,值会修改
删除:
? ? ? ? ? dic.clear()? ? #清空字典
? ? ? ? ? del dic['name'] #删除字典中指定键值对
? ? ? ? ? dic.pop('age')#删除字典中指定键值对,并返回该键值对的值
? ? ? ? ? dic.popitem()? #随机删除键值对,并以元组方式返回
其他操作涉及的方法:
dic1 =dict.formkeys(['host1','host2'],'test')#{'host1':'test','host2':'test'}
dic1 =dict.formkeys(['host1','host2','host3'],['test1','test2'])#{'host1':['test1','test2'],'host2':['test1','test2'],'host3':['test1','test2']}
dic1['host2'][1] = 'test3'? ?#{'host3':['test1''test3'],'host2':['test1''test3'],'host1':['test1''test3']}
? ? ? 字典的嵌套:
? ? ? 字典的排序:
? ? ? 字典的遍历:
字符串的操作
a = '123'
b= 'abc'
c = a+b #123abc
c='****'.join([a,b])#123****abc
st = 'hello kitty{name} is {age}'
? ? st.count('l')? ? #2? ? 统计元素个数
? ? ? st.captialize() #Hello kitty 首字母大写
? ? ? st.center(50,'-')#--------hello kitty --------居中
? ? ? st.endswith('tty3')#判断是否以某个内容结尾
? ? ? st.startswith('he')#判断是否以某个内容开头
? ? ? st.find('t') #8? 查找第一个元素,并返回索引,不存在是返回-1
? ? ? st.format(name? = 'alex',age= 37)#hello kitty alex is 37
? ? ? st.format_map({'name' :'alex','age':27})#hello kitty alex is 27
? ? ? st.index('t') #8 返回索引,找不到报错
‘ab'.isalnum()
'123'.isdigit()