zoukankan      html  css  js  c++  java
  • python--字典工厂函数dict()

     1 dic = {"name" : "wangmo" ,"age" : 18}
     2 
     3 #dic.clear() #清空字典
     4 print(dic)
     5 #{}
     6 
     7 dic1=dic.copy() #复制字典
     8 print(dic1)
     9 #{'name': 'wangmo', 'age': 18}
    10 
    11 dic1=dict.fromkeys("hello",1) #快速生成字典
    12 print(dic1)
    13 #{'o': 1, 'h': 1, 'l': 1, 'e': 1}
    14 
    15 print(dic.get("name")) #查看字典中是否存在此key,没有提示none
    16 #wangmo
    17 
    18 print(dic["name"]) #查看字典中是否存在此key,没有会报错
    19 #wangmo
    20 
    21 print(dic.items()) #将每对key-value表示成列表中元组的形式
    22 #dict_items([('name', 'wangmo'), ('age', 18)])
    23 
    24 for i in dic.items(): #循环输出每个项目
    25     print(i)
    26 # ('name', 'wangmo')
    27 # ('age', 18)
    28 
    29 for k,v in dic.items(): #循环输出每个项目
    30     print(k,v)
    31 # name wangmo
    32 # age 18
    33 
    34 print(dic.keys()) #输出字典的key值
    35 #dict_keys(['name', 'age'])
    36 
    37 for i in dic.keys(): #循环输出字典的key值
    38     print(i)
    39 # name
    40 # age
    41 
    42 for i in dic.keys(): #可以循环输出key和value
    43     print('key is %s,value is %s' %(i,dic[i]))
    44 # key is age,value is 18
    45 # key is name,value is wangmo
     1 dic = {"name" : "wangmo" ,"age" : 18}
     2 
     3 #dic.pop("name") #删除一个一对key-value,没有会报错
     4 print(dic)
     5 #{'age': 18}
     6 
     7 #dic.popitem() #随机删除一对key-value,一般不用
     8 print(dic)
     9 #{'name': 'wangmo'}
    10 
    11 dic.setdefault("gender","M")  #如果键不已经存在于字典中,将会添加键并将值设为默认值
    12 print(dic)
    13 dic.setdefault("gender","W")
    14 print(dic)
    15 # {'gender': 'M', 'name': 'wangmo', 'age': 18}
    16 # {'gender': 'M', 'name': 'wangmo', 'age': 18}
    17 
    18 dic.setdefault('gender1',[]) #也可以接一个列表
    19 print(dic)
    20 dic.setdefault('gender1',[]).append('male')
    21 print(dic)
    22 # {'gender1': [], 'name': 'wangmo', 'age': 18, 'gender': 'M'}
    23 # {'gender1': ['male'], 'name': 'wangmo', 'age': 18, 'gender': 'M'}
     1 dic={'name':"wangmo",'gender':'?'}
     2 dic1={'gender':'male'}
     3 
     4 dic.update(dic1) #用dic1更新dic
     5 print(dic)
     6 #{'name': 'wangmo', 'gender': 'male'}
     7 
     8 dic1={'gender':'male','age':25}
     9 dic.update(dic1) #用dic1更新dic
    10 print(dic)
    11 #{'gender': 'male', 'age': 25, 'name': 'wangmo'}
    12 
    13 print(dic1.values()) #打印value
    14 #dict_values([25, 'male']
    15 
    16 for i in dic1.values(): #循环打印value
    17     print(i)
    18 # 25
    19 # male
    20 
    21 data = dic.fromkeys([1,2,3]) #创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值
    22 print(data)
    23 #{1: None, 2: None, 3: None}
    24 
    25 data = dic.fromkeys([1,2,3],'mo') #后面的value都一样
    26 print(data)
    27 #{1: 'mo', 2: 'mo', 3: 'mo'}
    28 
    29 data = dic.fromkeys([1,2,3],{'name':'mo','age':'25'}) #后面接一个字典
    30 print(data)
    31 data[1]['name']='MM' #只要改了一位,其他value都改了
    32 print(data)
    33 #{1: {'age': '25', 'name': 'mo'}, 2: {'age': '25', 'name': 'mo'}, 3: {'age': '25', 'name': 'mo'}}
    34 #{1: {'name': 'MM', 'age': '25'}, 2: {'name': 'MM', 'age': '25'}, 3: {'name': 'MM', 'age': '25'}}
     1 dic={'name':'mo','age':25,'gfs':['a','b','c']} #这里涉及一个浅copy问题,只copy第一层
     2 dic2=dic.copy() #字典的copy
     3 print(dic)
     4 # {'age': 25, 'gfs': ['a', 'b', 'c'], 'name': 'mo'}
     5 print(dic2)
     6 # {'age': 25, 'gfs': ['a', 'b', 'c'], 'name': 'mo'}
     7 dic2['name']='oo' #更改一个value值
     8 print(dic,dic2)
     9 # {'age': 25, 'gfs': ['a', 'b', 'c'], 'name': 'mo'} {'age': 25, 'gfs': ['a', 'b', 'c'], 'name': 'oo'}
    10 dic2['gfs'][2]='d' #更改value列表中的一个值
    11 print(dic,dic2)
    12 # {'age': 25, 'gfs': ['a', 'b', 'd'], 'name': 'mo'} {'age': 25, 'gfs': ['a', 'b', 'd'], 'name': 'oo'}
    13 print(id(dic),id(dic2)) #打印id,都是通过内存地址改列表
    14 #1933523997768 1933523997896
    15 print(id(dic['gfs']),id(dic2['gfs'])) #第二层的id就是一样的了
    16 #2108201311816 2108201311816
    17 
    18 
    19 #深copy
    20 import copy
    21 dic3=copy.deepcopy(dic)
    22 print(dic3)
    23 #{'name': 'mo', 'gfs': ['a', 'b', 'd'], 'age': 25}
    24 print(id(dic['gfs']),id(dic2['gfs']),id(dic3['gfs'])) #深copy的id变了
    25 #1541085601352 1541085601352 1541087074824
    26 
    27 
    28 #浅copy的一个场景:
    29 acc1={'name':'林海峰','account':{'credit':3000,'balance':3000}}
    30 acc2=acc1.copy()
    31 acc2['name']='杠娘'
    32 print(acc1)
    33 print(acc2)
    34 acc2['account']['credit'] -= 600
    35 print(acc1)
    36 print(acc2)
    37 # {'name': '林海峰', 'account': {'credit': 3000, 'balance': 3000}}
    38 # {'name': '杠娘', 'account': {'credit': 3000, 'balance': 3000}}
    39 # {'name': '林海峰', 'account': {'credit': 2400, 'balance': 3000}}
    40 # {'name': '杠娘', 'account': {'credit': 2400, 'balance': 3000}}
    41 
    42 for k,v in acc1.items(): #输出key,value,数据量大不好用
    43     print(k,v)
    44 # name 林海峰
    45 # account {'credit': 2400, 'balance': 3000}
    46 
    47 for k in acc1:  #输出key
    48     print(k)
    49 # name
    50 # account
    51 
    52 for k in acc1:
    53     print(k,acc1[k])
    54 # account {'balance': 3000, 'credit': 2400}
    55 # name 林海峰
    56 #多用这个,item需要转换,数据量大不好用
  • 相关阅读:
    Visio使用遇到的问题
    UML类图符号 各种关系说明以及举例
    测试人员与开发人员之间的关系如何?
    linux命令学习-复制(cp,scp)
    linux服务器报Too many open files的解决方法
    QTP学习一添加默认的注释及调用外部vbs文件
    关于JAVA应用中文字体显示小方框的问题解决
    web测试方法总结
    linux命令学习-su
    Oracle定义varchar2()类型存储汉字的长度问题
  • 原文地址:https://www.cnblogs.com/wangmo/p/5996049.html
Copyright © 2011-2022 走看看