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 ...
随机推荐
- VISUAL SVN安装 及客户端使用
1.为什么要用VisualSVN Server,而不用Subversion? 回答: 因为如果直接使用Subversion,那么在Windows 系统上,要想让它随系统启动,就要封装SVN Serve ...
- java 垃圾回收(堆内存)、以及栈内存的释放
一.Java的垃圾回收机制———解疑 Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间. 需要注意的是:垃圾回收回收的是无任何引用的 ...
- 【转】修改xampp的mysql默认密码
http://www.cnblogs.com/hongchenok/archive/2012/08/21/2648549.html MySQL 的“root”用户默认状态是没有密码的,所以在 PHP ...
- 第一章 :绪论-Twitter数据的收集和处理
为什么要用twitter,我心里是一万头CNM在飞奔.这个国外的东西很不好访问到的,国内的政策,你懂的,不说这个了,还是想办法翻出去再说吧. 不知道别人都用的什么工具,看到太多的注册就头大,就选了一个 ...
- 自己手写http服务器 http响应信息的封装与测试
package cn.edu.sss.httpServer; import java.io.BufferedWriter; import java.io.IOException; import jav ...
- 利用weka和clementine数据挖掘举例
1.数据概述 本报告中采用的数据集来自于UCI经典数据集Adult,最初来源是由1994年Barry Becker的统计数据集,该数据集本来最初的主要任务是根据数据集中的相关属性预测某个人的年收入是大 ...
- 题目1096:日期差值(a-b=(a-c)-(b-c))
http://ac.jobdu.com/problem.php?pid=1096 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每 ...
- SQL中binary 和 varbinary的区别 blob
binary 和 varbinary固定长度 (binary) 的或可变长度 (varbinary) 的 binary 数据类型. binary [ ( n ) ] 固定长度的 n 个字节二进制数据. ...
- C++ STL@ list 应用 (leetcode: Rotate Array)
STL中的list就是一双向链表,可高效地进行插入删除元素. List 是 C++标准程式库 中的一个 类 ,可以简单视之为双向 连结串行 ,以线性列的方式管理物件集合.list 的特色是在集合的任何 ...
- Unity3D入门之JavaScript动态创建对象
接着上一篇Unity3D入门文章,这里继续使用JavaScript脚本语言. 调试:Unity集成了MonoDevelop编辑器,在代码某行的左侧点击,即可下一个断点.然后先关闭Unity编辑器,在M ...