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()的更多相关文章

  1. python之工厂函数

    python之工厂函数 本人也是小白一个,最近在学习python工厂函数时随便在网上搜了搜,发现许多人对工厂函数的理解存在误区,同时也是为了整理和记录自己的思路,写下本片博文. 工厂函数顾名思义就是一 ...

  2. python--字符工厂函数dict()

    字符工厂函数str() class str(object): """ str(object='') -> str str(bytes_or_buffer[, enc ...

  3. 什么是工厂函数?Python 中工厂函数怎么理解?(转)

    所谓工厂函数就是指这些内建函数都是类对象(实际上是类), 当你调用它们时,实际上是创建了一个类实例. type():查看类型

  4. python 字典的函数

    clear(),清空 注意单纯的赋值就相当于c语言中引用,只事额外起了一个别名,所以他们指向相同的地址, 所以令c={},只是另外开辟了一个新的空间让c为空,并没有改变之前的空间,所以{}与clear ...

  5. python 字典(dictionary)一些方法

    1.python 字典(Dictionary) keys() 函数以列表返回一个字典所有的键. keys()语法: dict.keys() 2.setdefault()方法 python字典setde ...

  6. Python 字典(Dictionary) fromkeys()方法

    描述 Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值.高佣联盟 www.cgewang.com 语法 from ...

  7. python教程-(四)当索引行不通时(python字典)

    一.创建和使用字典 1.函数dict #字典表示方式如下 >>> phonebook = {'tom':'18616271234',"Jim":"186 ...

  8. Python 字典 dict() 函数

    描述 Python 字典 dict() 函数用于创建一个新的字典,用法与 Pyhon 字典 update() 方法相似. 语法 dict() 函数函数语法: dict(key/value) 参数说明: ...

  9. (转)论python工厂函数与内建函数

    所谓工厂函数就是指这些内建函数都是类对象, 当你调用它们时,实际上是创建了一个类实例.   工厂函数: int(),long(),float(),complex(),bool() str(),unic ...

随机推荐

  1. HDU 5317 RGCDQ

    题意:f(i)表示i的质因子个数,给l和r,问在这一区间内f(i)之间任意两个数最大的最大公倍数是多少. 解法:先用筛法筛素数,在这个过程中计算f(i),因为f(i)不会超过7,所以用一个二维数组统计 ...

  2. 结构型:代理模式 Vs 适配器模式 Vs 门面模式(外观模式)

    先上UML图 代理模式: 适配器模式: 门面模式(外观模式): 打了例子……呃……举个比方 代理模式: 水浒街,西门庆看上潘金莲,想和她嘿咻嘿咻,但是自己有不能去找潘金莲去说,于是他找到了金牌代理人王 ...

  3. longblogV1.0——我的静态博客发布系统

    longblogV1.0——我的静态博客发布系统 环境依赖: python3-markdown 作者:IT小小龙个人主页:http://long_python.gitcafe.com/电子邮箱:lon ...

  4. 6.1 CUDA: pinned memory固定存储

    CPU和GPU内存交互 在CUDA编程中,内存拷贝是非常费时的一个动作. 从上图我们可以看出:1. CPU和GPU之间的总线bus是PCIe,是双向传输的. 2. CPU和GPU之间的数据拷贝使用DM ...

  5. KindEditor 4.1.10 (2013-11-23)首行空格不能显示在编辑器内

    KindEditor版本: KindEditor 4.1.10 (2013-11-23) 一.BUG再现步骤: 1.文章前面插入二个全角空格作为缩进,因为并非所有段落都有缩进故不采用 CSS 的 te ...

  6. leetcode@ [329] Longest Increasing Path in a Matrix (DFS + 记忆化搜索)

    https://leetcode.com/problems/longest-increasing-path-in-a-matrix/ Given an integer matrix, find the ...

  7. 【转】Javascript 面向对象编程(一):封装

    原文链接:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html Javascript ...

  8. Modernizr 与 Polyfill

    之前提到,Modernizr 是 HTML5 和 CSS3 的特性检测工具,这里简单介绍一下它的用法.最简单的用法是在页面的 <head> 中添加 Modernizr 的 JavaScri ...

  9. .net 开发人员的瓶颈和职业发展

    .net 开发人员的瓶颈和职业发展 现在社会比前几年浮躁了,越来越多的人抱怨薪水低,高薪工作不好找; 诚然这有CPI的压力,可是也有很多人没有认清自己的职业发展. 很多.net程序员个各种纠结,想拿高 ...

  10. linux系统基础(二)

    磁盘管理(一) Linux设备认识 /dev/cdrom /dev/sr0 /dev/mouse /dev/sda /dev/hda IDE硬盘(支持4块):hd(a-d) [非IDE硬盘]SCSI硬 ...