Python3基础-基本数据类型之字典

字典

  1. 字典是另一种可变容器模型,且可存储任意类型对象。无序的
  2. 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:d = {key1 : value1, key2 : value2 }
  3. 键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。
  4. dict={'a':1,'a':2,'c':3} #key值相同时,最后的一个键值对会替换前面的
    print(dict) # 则输出的是 {'a': 2, 'c': 3}
  5. #字典的value的值可以任意值
    dict={
        "code":10010,
        "data":[
            'adsderasdasd',
            '',
            11,
            True,
            {
                'data1':1,
                'value':'2',
                'mege':(1,2),
    
            }
        ],
        'message':'请输入正确的数值',
    }
    
    print(dict) #可以正常输出  {'code': 10010, 'data': ['adsderasdasd', '', 11, True, {'data1': 1, 'value': '2', 'mege': (1, 2)}], 'message': '请输入正确的数值'}
  6. dict1={
        1:1,
        'a':2,
        True:3,
        False:4
    } #key值 True、False  
    print(dict1) # 则输出的是 {1: 3, 'a': 2, False: 4}  
    #为什么True输出不了 因为True 1 字典里面已经有了 1:1 # dict2
    ={ # 1:1, # 'a':2, # [1,2,'a']:'b' # } #key值 列表 # print(dict2) #会报错 TypeError: unhashable type: 'list' dict3={ 1:1, 'a':2, (1,2,'a'):'b' } #key值 元祖 print(dict3) #可以正常输出 {1: 1, 'a': 2, (1, 2, 'a'): 'b'} 因为元祖不可变 # dict4={ # 1:1, # 'a':2, # {1:2}:'b' # } #key值 字典 # print(dict3) #会报错 TypeError: unhashable type: 'dict'

    获取字典的值

#字典
dict={'a':1,'b':2,'c':3}
print(dict['b'])  #输出字典中key为b值 为 2
print(dict)   #输出字典dict    {'a': 1, 'b': 2, 'c': 3}

#嵌套查询
dict1={
    "code":10010,
    "data":[
        'adsderasdasd',
        '1',
        11,
        True,
        {
            'data1':1,
            'value':'2',
            'mege':(1,2),

        }
    ],
    'message':'请输入正确的数值',
}
value=dict1['data'][4]['mege'][0]  #或者元祖(12)里面值1
print("value===",value)  #输出value=== 1

删除字典中的某个值

dict1={
    "code":10010,
    "data":[
        'adsderasdasd',
        '1',
        11,
        True,
        {
            'data1':1,
            'value':'2',
            'mege':(1,2),

        }
    ],
    'message':'请输入正确的数值',
}
del dict1["code"]
print(dict1) #
del dict1["data"][4]['mege']
print(dict1)
del dict1["data"][4]['mege'][1] 
print(dict1) 

"""
执行结果
1、{'data': ['adsderasdasd', '1', 11, True, {'data1': 1, 'value': '2', 'mege': (1, 2)}], 'message': '请输入正确的数值'}
2、{'data': ['adsderasdasd', '1', 11, True, {'data1': 1, 'value': '2'}], 'message': '请输入正确的数值'}
3、则会报错  提示TypeError: 'tuple' object doesn't support item deletion
"""

循环获取字典key、value的值

dict1={
    "code":10010,
    "data":[
        'adsderasdasd',
        '1',
        11,
        True,
        {
            'data1':1,
            'value':'2',
            'mege':(1,2)

        }
    ],
    'message':'请输入正确的数值'
}

for key in dict1:
    print("key=",key,' ;',end='')  #循环输出的key的值
print('\n')

for key  in dict1.keys():
    print("key=",key,' ;',end='')  #循环输出的key的值
print('\n')

for value in dict1.values():  #循环输出value值
    print("value=",value,' ;',end='')

print('\n')
for key in dict1.keys():  #循环输出key 和对应value值
    print("%s:%s"%(key,dict1[key]),';',end='')

print('\n')
for key,value in dict1.items(): #循环输出key 和对应value值
    print("%s:%s"%(key,value),';',end='')

"""
执行结果:
key= code  ;key= data  ;key= message  ;
key= code  ;key= data  ;key= message  ;
value= 10010  ;value= ['adsderasdasd', '1', 11, True, {'data1': 1, 'value': '2', 'mege': (1, 2)}]  ;value= 请输入正确的数值  ;
code:10010 ;data:['adsderasdasd', '1', 11, True, {'data1': 1, 'value': '2', 'mege': (1, 2)}] ;message:请输入正确的数值 ;
code:10010 ;data:['adsderasdasd', '1', 11, True, {'data1': 1, 'value': '2', 'mege': (1, 2)}] ;message:请输入正确的数值 ;
"""

 fromkeys() 

dict.fromkeys(seq[, value])用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值

  • seq -- 字典键值列表。
  • value -- 可选参数, 设置键序列(seq)对应的值,默认为 None。
seq=('name', 'age', 'sex')

dict3=dict.fromkeys(seq)
print(dict3)

dict3=dict.fromkeys(seq,10)
print(dict3)

seq1=['name', 'age', 'sex']
dict3=dict.fromkeys(seq1)
print(dict3)

”“”
执行结果如下
{'name': None, 'age': None, 'sex': None}
{'name': 10, 'age': 10, 'sex': 10}
{'name': None, 'age': None, 'sex': None}
"""

清空、拷贝、删除字典

dict1={'a':1,'b':2,'c':3}
dict1.clear() #清空字典
print(dict1)  #输出{}

dict1={'a':1,'b':2,'c':3}
dict2=dict1.copy() #浅拷贝 dict1
print(dict2) #输出dict2   {'a': 1, 'b': 2, 'c': 3}

dict1={'a':1,'b':2,'c':3}
del_value=dict1.pop('a') #移除key为a
print(dict1,del_value)  #输出  {'b': 2, 'c': 3}

# del_value=dict1.pop('d')  #移除不存在的key,
# print(dict1,del_value)  #报错 KeyError: 'd'


del_value=dict1.pop('d',999)  #移除不存在的key,则指定999赋值给del_value
print(dict1,del_value)  #输出 {'b': 2, 'c': 3} 999

dict1={'a':1,'b':2,'c':3}
del_value=dict1.popitem()  #随机删除一对键值
print(dict1,del_value) #输出  {'a': 1, 'b': 2} ('c', 3)

 

get()

根据key获取value值,key不存在时,则可以指定默认值(None)

dict1={'a':1,'b':2,'c':3}
#no_key=dict['d']  #则会直接报错 TypeError: 'type' object is not subscriptable

no_key=dict1.get('a')
print('no_key=',no_key)    #输出   no_key= 1

no_key=dict1.get('d')
print('no_key=',no_key)  #输出  no_key= None

no_key=dict1.get('e','1233')
print('no_key=',no_key)  #输出  no_key= 1233

 setdefault()

dict.setdefault(key, default=None)和 get()方法 类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值

如果 key 在 字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None。

dict1={'a':1,'b':2,'c':3}
set_value=dict1.setdefault('a','aaa') #设置已存在的key,则不进行设置;同时获取的是当前key对应的值
print(dict1,set_value)

set_value=dict1.setdefault('d','ddd')#设置不存在的key,则进行设置;同时获取的是设置的值
print(dict1,set_value)

update()

字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里

dict1={'a':1,'b':2,'c':3}
dict1.update({'a':'aaa','d':'ddd'}) #更新已存在的key,则更新对应的值 ;更新不存在的key,则添加到字典
print(dict1) #{'a': 'aaa', 'b': 2, 'c': 3, 'd': 'ddd'}

# dict1={'a':1,'b':2,'c':3}
#dict1.update('a'='aaa','d'='ddd') # 报错 SyntaxError: keyword can't be an expression

 

posted @ 2019-10-14 13:46  槑槑DE  阅读(227)  评论(0编辑  收藏  举报