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 ...
随机推荐
- JMX学习笔记(三)-MXBean
在MBean中有只要遵循以下两个规则,我们就可以在jconsole中动态的改变MBean中的属性值 1. JMX中要定义接口必须以xxxMBean的规范定义 2. 得有类实现xxxMBean接口 例如 ...
- web.xml 配置的详解
http://my.oschina.net/u/1383439/blog/224448 http://blog.csdn.net/guihaijinfen/article/details/836383 ...
- NBUT1457 Sona 莫队算法
由于10^9很大,所以先离散化一下,把给你的这一段数哈希 时间复杂度O(nlogn) 然后就是分块莫队 已知[L,R],由于事先的离散化,可以在O(1)的的时间更新[l+1,r],[l,r+1],[l ...
- BZOJ2038: [2009国家集训队]小Z的袜子(hose) 莫队算法
要使用莫队算法前提 ,已知[l,r]的答案,要能在logn或者O(1)的时间得到[l+1,r],[l-1,r],[l,r-1],[l,r+1],适用于一类不修改的查询 优美的替代品——分块将n个数分成 ...
- Git管理命令
1.创建分支 git branch <分支名> 2.切换分支 git checkout <分支名> 创建并切换到该分支:git checkout -b <分支名> ...
- 《C Primer Plus 第五版》读书笔记
CH1-2:概述 链接器:链接库代码.启动代码(start-up code) CH3-5:数据.字符串.运算符 1 数据类型存储方式:整数类型.浮点数类型 2 浮点数存储:小数部分+指数部分 3 in ...
- bzoj 3131 [Sdoi2013]淘金(数位DP+优先队列)
Description 小Z在玩一个叫做<淘金者>的游戏.游戏的世界是一个二维坐标.X轴.Y轴坐标范围均为1..N.初始的时候,所有的整数坐标点上均有一块金子,共N*N块. 一阵风吹 ...
- 50道经典的JAVA编程题(46-50)
50道经典的JAVA编程题(46-50),最后五道题了,这是一个美妙的过程,编程真的能让我忘掉一切投入其中,感觉很棒.今天下午考完微机原理了,大三上学期就这样度过了,这学期算是解放了,可是感觉我还是没 ...
- leetcode@ [68] Text Justification (String Manipulation)
https://leetcode.com/problems/text-justification/ Given an array of words and a length L, format the ...
- [OC Foundation框架 - 22] 集合的内存管理
A.集合的手动内存管理 NSArray addObject: 加入的元素执行一次retain removeObject: 被删除的元素执行一次release removeAllObjects: 所有元 ...