彩虹然

rainbow-ran

Python3.7之字典

一、Python 字典(Dictionary) fromkeys()方法

用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值,返回一个新字典。

seq = ('Google', 'Runoob', 'Taobao')
 
dict = dict.fromkeys(seq)
print "新字典为 : %s" %  str(dict)
 
dict = dict.fromkeys(seq, 10)
print "新字典为 : %s" %  str(dict)
'''
新字典为 : {'Google': None, 'Taobao': None, 'Runoob': None}
新字典为 : {'Google': 10, 'Taobao': 10, 'Runoob': 10}
'''

二、字典常见操作

1.dic.iteritems(), dic.iterkeys(), dic.itervalues()

与他们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表。Python 3.x已经移除了此函数。

2.dic.clear()

清空字典

3.dic.update(dic2)

将字典dic2的键值对添加到字典dic中

4.dic.get(key, default=None),dic.pop(key[, default])与dic.setdefault(key, default=None)

get返回字典中key对应的值,若key不存在字典中,则返回None;

pop如果字典中存在key,删除并返回key对应的value;若key不存在,且没有给出default的值,则引发keyerror异常。

setdefault和 get类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

dict = {'runoob': '菜鸟教程', 'google': 'Google 搜索'}
 
print "Value : %s" %  dict.setdefault('runoob', None)
print "Value : %s" %  dict.setdefault('Taobao', '淘宝')
'''
Value : 菜鸟教程
Value : 淘宝
'''

5.copy()函数

copy() 函数返回一个字典的浅复制。

dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
 
dict2 = dict1.copy()
print ("新复制的字典为 : ",dict2)
'''
新复制的字典为 :  {'Age': 7, 'Name': 'Runoob', 'Class': 'First'}
'''

直接赋值和 copy 的区别

dict1 =  {'user':'runoob','num':[1,2,3]}
 
dict2 = dict1          # 直接赋值: 引用对象
dict3 = dict1.copy()   # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用
 
# 修改 data 数据
dict1['user']='root'
dict1['num'].remove(1)
 
# 输出结果
print(dict1)
print(dict2)
print(dict3)
'''
{'user': 'root', 'num': [2, 3]}
{'user': 'root', 'num': [2, 3]}
{'user': 'runoob', 'num': [2, 3]}
'''

参考链接:https://www.runoob.com/python3/python3-att-dictionary-copy.html

Python 直接赋值、浅拷贝和深度拷贝解析:

https://www.runoob.com/w3cnote/python-understanding-dict-copy-shallow-or-deep.html

posted @ 2020-01-16 16:00  彩虹然  阅读(754)  评论(0编辑  收藏  举报