python--字典工厂函数dict()
dic = {"name" : "wangmo" ,"age" : 18}
#dic.clear() #清空字典
print(dic)
#{}
dic1=dic.copy() #复制字典
print(dic1)
#{'name': 'wangmo', 'age': 18}
dic1=dict.fromkeys("hello",1) #快速生成字典
print(dic1)
#{'o': 1, 'h': 1, 'l': 1, 'e': 1}
print(dic.get("name")) #查看字典中是否存在此key,没有提示none
#wangmo
print(dic["name"]) #查看字典中是否存在此key,没有会报错
#wangmo
print(dic.items()) #将每对key-value表示成列表中元组的形式
#dict_items([('name', 'wangmo'), ('age', 18)])
for i in dic.items(): #循环输出每个项目
print(i)
# ('name', 'wangmo')
# ('age', 18)
for k,v in dic.items(): #循环输出每个项目
print(k,v)
# name wangmo
# age 18
print(dic.keys()) #输出字典的key值
#dict_keys(['name', 'age'])
for i in dic.keys(): #循环输出字典的key值
print(i)
# name
# age
for i in dic.keys(): #可以循环输出key和value
print('key is %s,value is %s' %(i,dic[i]))
# key is age,value is 18
# key is name,value is wangmo
dic = {"name" : "wangmo" ,"age" : 18}
#dic.pop("name") #删除一个一对key-value,没有会报错
print(dic)
#{'age': 18}
#dic.popitem() #随机删除一对key-value,一般不用
print(dic)
#{'name': 'wangmo'}
dic.setdefault("gender","M") #如果键不已经存在于字典中,将会添加键并将值设为默认值
print(dic)
dic.setdefault("gender","W")
print(dic)
# {'gender': 'M', 'name': 'wangmo', 'age': 18}
# {'gender': 'M', 'name': 'wangmo', 'age': 18}
dic.setdefault('gender1',[]) #也可以接一个列表
print(dic)
dic.setdefault('gender1',[]).append('male')
print(dic)
# {'gender1': [], 'name': 'wangmo', 'age': 18, 'gender': 'M'}
# {'gender1': ['male'], 'name': 'wangmo', 'age': 18, 'gender': 'M'}
dic={'name':"wangmo",'gender':'?'}
dic1={'gender':'male'}
dic.update(dic1) #用dic1更新dic
print(dic)
#{'name': 'wangmo', 'gender': 'male'}
dic1={'gender':'male','age':25}
dic.update(dic1) #用dic1更新dic
print(dic)
#{'gender': 'male', 'age': 25, 'name': 'wangmo'}
print(dic1.values()) #打印value
#dict_values([25, 'male']
for i in dic1.values(): #循环打印value
print(i)
#
# male
data = dic.fromkeys([1,2,3]) #创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值
print(data)
#{1: None, 2: None, 3: None}
data = dic.fromkeys([1,2,3],'mo') #后面的value都一样
print(data)
#{1: 'mo', 2: 'mo', 3: 'mo'}
data = dic.fromkeys([1,2,3],{'name':'mo','age':''}) #后面接一个字典
print(data)
data[1]['name']='MM' #只要改了一位,其他value都改了
print(data)
#{1: {'age': '25', 'name': 'mo'}, 2: {'age': '25', 'name': 'mo'}, 3: {'age': '25', 'name': 'mo'}}
#{1: {'name': 'MM', 'age': '25'}, 2: {'name': 'MM', 'age': '25'}, 3: {'name': 'MM', 'age': '25'}}
dic={'name':'mo','age':25,'gfs':['a','b','c']} #这里涉及一个浅copy问题,只copy第一层
dic2=dic.copy() #字典的copy
print(dic)
# {'age': 25, 'gfs': ['a', 'b', 'c'], 'name': 'mo'}
print(dic2)
# {'age': 25, 'gfs': ['a', 'b', 'c'], 'name': 'mo'}
dic2['name']='oo' #更改一个value值
print(dic,dic2)
# {'age': 25, 'gfs': ['a', 'b', 'c'], 'name': 'mo'} {'age': 25, 'gfs': ['a', 'b', 'c'], 'name': 'oo'}
dic2['gfs'][2]='d' #更改value列表中的一个值
print(dic,dic2)
# {'age': 25, 'gfs': ['a', 'b', 'd'], 'name': 'mo'} {'age': 25, 'gfs': ['a', 'b', 'd'], 'name': 'oo'}
print(id(dic),id(dic2)) #打印id,都是通过内存地址改列表
#1933523997768 1933523997896
print(id(dic['gfs']),id(dic2['gfs'])) #第二层的id就是一样的了
#2108201311816 2108201311816
#深copy
import copy
dic3=copy.deepcopy(dic)
print(dic3)
#{'name': 'mo', 'gfs': ['a', 'b', 'd'], 'age': 25}
print(id(dic['gfs']),id(dic2['gfs']),id(dic3['gfs'])) #深copy的id变了
#1541085601352 1541085601352 1541087074824
#浅copy的一个场景:
acc1={'name':'林海峰','account':{'credit':3000,'balance':3000}}
acc2=acc1.copy()
acc2['name']='杠娘'
print(acc1)
print(acc2)
acc2['account']['credit'] -= 600
print(acc1)
print(acc2)
# {'name': '林海峰', 'account': {'credit': 3000, 'balance': 3000}}
# {'name': '杠娘', 'account': {'credit': 3000, 'balance': 3000}}
# {'name': '林海峰', 'account': {'credit': 2400, 'balance': 3000}}
# {'name': '杠娘', 'account': {'credit': 2400, 'balance': 3000}}
for k,v in acc1.items(): #输出key,value,数据量大不好用
print(k,v)
# name 林海峰
# account {'credit': 2400, 'balance': 3000}
for k in acc1: #输出key
print(k)
# name
# account
for k in acc1:
print(k,acc1[k])
# account {'balance': 3000, 'credit': 2400}
# name 林海峰
#多用这个,item需要转换,数据量大不好用
python--字典工厂函数dict()的更多相关文章
- python之工厂函数
python之工厂函数 本人也是小白一个,最近在学习python工厂函数时随便在网上搜了搜,发现许多人对工厂函数的理解存在误区,同时也是为了整理和记录自己的思路,写下本片博文. 工厂函数顾名思义就是一 ...
- python--字符工厂函数dict()
字符工厂函数str() class str(object): """ str(object='') -> str str(bytes_or_buffer[, enc ...
- 什么是工厂函数?Python 中工厂函数怎么理解?(转)
所谓工厂函数就是指这些内建函数都是类对象(实际上是类), 当你调用它们时,实际上是创建了一个类实例. type():查看类型
- python 字典的函数
clear(),清空 注意单纯的赋值就相当于c语言中引用,只事额外起了一个别名,所以他们指向相同的地址, 所以令c={},只是另外开辟了一个新的空间让c为空,并没有改变之前的空间,所以{}与clear ...
- python 字典(dictionary)一些方法
1.python 字典(Dictionary) keys() 函数以列表返回一个字典所有的键. keys()语法: dict.keys() 2.setdefault()方法 python字典setde ...
- Python 字典(Dictionary) fromkeys()方法
描述 Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值.高佣联盟 www.cgewang.com 语法 from ...
- python教程-(四)当索引行不通时(python字典)
一.创建和使用字典 1.函数dict #字典表示方式如下 >>> phonebook = {'tom':'18616271234',"Jim":"186 ...
- Python 字典 dict() 函数
描述 Python 字典 dict() 函数用于创建一个新的字典,用法与 Pyhon 字典 update() 方法相似. 语法 dict() 函数函数语法: dict(key/value) 参数说明: ...
- (转)论python工厂函数与内建函数
所谓工厂函数就是指这些内建函数都是类对象, 当你调用它们时,实际上是创建了一个类实例. 工厂函数: int(),long(),float(),complex(),bool() str(),unic ...
随机推荐
- 静态Web开发 JavaScript
三章 Javascript 1节javascript基本语法和注意事项 脚本,一条条的文字命令.执行时由系统的一个解释器,将其一条条的翻译成机器可识别的指令,然后执行.(不需要编译)常见的脚本:批处理 ...
- HDU5046 Airport dancing links 重复覆盖+二分
这一道题和HDU2295是一样 是一个dancing links重复覆盖解决最小支配集的问题 在给定长度下求一个最小支配集,只要小于k就行 然后就是二分答案,每次求最小支配集 只不过HDU2295是浮 ...
- MFC常用类
CString CStringT 操作可变长度字符串的模板类CStringT有三个实例:CString.CStringA和CStringW,它们分别提供对TCHAR.char和wchar_t字符类型的 ...
- uva 11019 Matrix Matcher
题意:给出一个n*m的字符矩阵T,你的任务是找出给定的x*y的字符矩阵P在T中出现了多少次. 思路:要想整个矩阵匹配,至少各行都得匹配.所以先把P的每行看做一个模式串构造出AC自动机,然后在T中的各行 ...
- 50道经典的JAVA编程题(目录)
这份题从2013做到2014啊...哈哈,整理个目录吧.为了好查阅,也为了监督自己好好的去做完这50道题.当然,有些题实在做得没意思就跳过了,或者自己改题了.题目来源于:http://blog.sin ...
- rpi good tutorial
http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/quick-start/
- Java流操作之转换流
流的操作规律: 1.明确流和目的. 数据源(源头):就是需要读取,可以使用两个体系:InputStream.Reader 数据汇(目的地):就是需要写入,可以使用两个体系:OutputStream.W ...
- hdoj 1213 How Many Tables
How Many Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- [Objective-c 基础 - 3.3] block数据类型
A.概念 1.block类似函数 (1)可以保存代码 (2)有返回值 (3)有形参 2.block的标志:^ // 没有参数和返回值的block void (^myblock)() = ^{ // ...
- Android Design 与 Holo Theme
转载:http://www.geekpark.net/topics/179488 [核心提示] 提到 Android Design,很多人会做出”啊,知道,就是黑色的背景和灰蓝色的平的按钮嘛”,那么到 ...