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学习一
JMX 即 Java Management Extensions Java管理扩展MBean 即 managed beans 被管 ...
- 任务栏窗口和状态图标的闪动 z
Demo程序: 实现任务栏窗体和图标的闪动: 整个程序是基于Windows Forms的,对于任务栏右下角状态图标的闪动,创建了一个类型:NotifyIconAnimator,基本上是包装了Windo ...
- sublime3安装python插件 -- SublimeCodeIntel
先装Package Control,类似pip的一个索引安装工具. 1.http://sublime.wbond.net/Package%20Control.sublime-package 2.sub ...
- 判断一个面(Polygon)是不是矩形
判断一个面是不是矩形在GIS中很长用的功能,那么怎么判断一个面是不是矩形呢. 这里先要弄懂一些概念,面是什么,先看OGC标准的定义. 我的英文水平有限,(有翻译更好的请留言,如果翻译的准确将被采纳)大 ...
- httpServer V1
package cn.edu.sss.httpServer; import java.io.BufferedReader; import java.io.IOException; import jav ...
- Eclipse hangs on loading workbench, eclipse停在启动界面的处理办法
http://stackoverflow.com/questions/8972034/eclipse-hangs-on-loading-workbench 解答一: In most cases, rm ...
- 【转】 hive简介,安装 配置常见问题和例子
原文来自: http://blog.csdn.net/zhumin726/article/details/8027802 1 HIVE概述 Hive是基于Hadoop的一个数据仓库工具,可以将结构化 ...
- Umbraco Form需要引用些客户端dependencies (jquery)
Preparing your frontend In order to work correctly Umbraco Forms needs some client dependencies, bei ...
- ASP.Net 使用SqlBulkCopy批量插入
批量插入,以前我的做法是生成一堆insert into的sql语句,然后用程序一次值行,来实现. 今天看到了ASP.Net里可以使用DataTable,先将数据写入到DataTable中,然后使用Sq ...
- Oracle中遍历Ref Cursor示例
示例编写环境 数据库:Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 登陆用户:Scott O ...