欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python-字典

程序员文章站 2022-05-28 14:01:16
...
一.字典的创建
1.可以直接用键值对进行创建:
>>> d_test={"abc":"123","bcd":"456","cde":"789"}
>>> d_test
{'bcd': '456', 'cde': '789', 'abc': '123'}

2.利用dict函数生成字典
>>> item=[('abc',123),('bcd',456),('cde',567)]
>>> d_test2=dict(item)
>>> d_test2
{'bcd': 456, 'cde': 567, 'abc': 123}
>>> d_test3 = dict(abc=123,bcd=456,cde=789)
>>> d_test3 
{'bcd': 456, 'cde': 789, 'abc': 123}
>>> d_test3 = dict('abc'=123,'bcd'=456)
  File "<stdin>", line 1
SyntaxError: keyword can't be an expression

注意:如果按照例子中item方式生成字典,string类型一定要引号,如果按照下面的创建字典一定要不要加引号,否则会报错
二.字典的基本操作:
d_test是一个字典
len(d_test3) 返回字典d中键值对的数量
>>> len(d_test3)
3

d_test[k]返回关联到键k上的值,k值如果不存在时候,会报异常
>>> d_test3['abc']
123
>>> d_test3['123']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: '123'

d_test[k]=val 是把val值关联到键k上,若是不存在,添加
>>> d_test3['abc']='abc'
>>> d_test3
{'bcd': 456, 'cde': 789, 'abc': 'abc'}
>>> d_test3['xyz']=123
>>> d_test3
{'bcd': 456, 'cde': 789, 'xyz': 123, 'abc': 'abc'}

del d_test[k] 删除键为K的项,若不存在,报错:
>>> del d_test3['xyz']
>>> d_test3
{'bcd': 456, 'cde': 789, 'abc': 'abc'}
>>> del d_test3['xyz']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'xyz'

三.字典对象的方法
1.clear清除方法,清除字典中的所有项,没有返回值。
>>> d_test3.clear()
>>> d_test3
{}

2.copy复制方法,复制的方法两个对象各自作修改,对复制的对象或元对象都没有影响,只对本身的对象有影响
>>> d_test3 = dict(abc=123,bcd=456,cde=789)
>>> d_test4=d_test3.copy();
>>> d_test4['abc']=456
>>> d_test4
{'bcd': 456, 'cde': 789, 'abc': 456}
>>> d_test3
{'bcd': 456, 'cde': 789, 'abc': 123}
>>> d_test3['abc']='dtest3'
>>> d_test3
{'bcd': 456, 'cde': 789, 'abc': 'dtest3'}
>>> d_test4
{'bcd': 456, 'cde': 789, 'abc': 456}

以上复制被称为浅复制:还有深复制。深复制确切不是说字典的方法。不过也可以看一下。以下例子可以看出当深复制修改的值是原子类型(数字,字符串)等,深复制和浅复制是没有什么变化的,当修改对象为序列等复杂对象的时候,深复制不会随着原对象的改变而改变,而copy方法就会进行改变
>>> d_test3 = dict(abc=123,bcd=456,cde=[789,123,456])
>>> from copy import deepcopy
>>> d_test4=d_test3.copy()
>>> d_test4
{'bcd': 456, 'cde': [789, 123, 456], 'abc': 123}
>>> d_test5=deepcopy(d_test3)
>>> d_test5
{'bcd': 456, 'cde': [789, 123, 456], 'abc': 123}
>>> d_test3['abc']='test3'
>>> d_test5
{'bcd': 456, 'cde': [789, 123, 456], 'abc': 123}
>>> d_test4
{'bcd': 456, 'cde': [789, 123, 456], 'abc': 123}
>>> d_test3
{'bcd': 456, 'cde': [789, 123, 456], 'abc': 'test3'}
>>> d_test3['cde'].remove(123)
>>> d_test3
{'bcd': 456, 'cde': [789, 456], 'abc': 'test3'}
>>> d_test4
{'bcd': 456, 'cde': [789, 456], 'abc': 123}
>>> d_test5
{'bcd': 456, 'cde': [789, 123, 456], 'abc': 123}

3.get和setdefault方法:
get:当K值存在的时候。字典[K]取值的方法和get方法相同的,但是get(K)不存在,不会报异常,默认返回none值,也可以是设定值。
setdefault,当key存在的时候,返回key对象,当key不存在可以设置对象。注意,改变字典对象
>>> d_test3 = dict(abc=123,bcd=456,cde=[789,123,456])
>>> d_test3.get('abc')
'123'
>>> d_test3.get('abcd')
>>> d_test3.get('abcd','hello')
'hello'
>>> d_test.setdefault('cde','123')
'789'
>>> d_test
{'bcd': '456', 'cde': '789', 'abc': '123'}
>>> d_test.setdefault('cdee','123')
'123'
>>> d_test
{'bcd': '456', 'cde': '789', 'abc': '123', 'cdee': '123'}

4.fromkeys方法:默认可以新建一个字典,且key指定的值,键默认值为none,也可以进行指定
5.has_key:判断K是否存在,返回boolean类型
6迭代对象:
a.items和iteritems
items:把字典中的对象以列表的形式返回,列表中的每个对象的为(键,值)
iteritems:返回字典的迭代器对象,而不是一个列表
>>> d_test.items()
[('bcd', '456'), ('cde', '789'), ('abc', '123')]
>>> it=d_test.iteritems()
>>> list(it)
[('bcd', '456'), ('cde', '789'), ('abc', '123')]

b.keys和iterkeys
与items相似,不过只返回键的对象
>>> d_test.keys()
['bcd', 'cde', 'abc']
>>> keyit=d_test.iterkeys()
>>> list(keyit)
['bcd', 'cde', 'abc']

c.values和itervalues:和keys和iterkeys对象类似。
7.移除
pop可以移除指定的key,及和这个key关联的对象。注意:当key不存在的时候,就会报异常
popitem移除字典中随机一个对象
8.修改
利用update方法,可以用一个字典修改另一个字典。注意:更新格式:字典1.update(字典2),字典2中的key存在字典1中的时候,字典1中key所对应的值修改成字典2中key所绑定的值
若key不存在,就会添加到字典1
>>> d_test1={'abc':'abc'}
>>> d_test.update(d_test1)
>>> d_test
{'bcd': '456', 'cde': '789', 'abc': 'abc'}
>>> d_test1
{'abc': 'abc'}
>>> d_test2={'abcc':'abc'}
>>> d_test.update(d_test2)
>>> d_test
{'bcd': '456', 'cde': '789', 'abc': 'abc', 'abcc': 'abc'}
相关标签: Python 字典