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

Posted 槑槑的离生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 doesnt 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(
)

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

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

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

print(
)
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

 

以上是关于Python3基础-基本数据类型之字典的主要内容,如果未能解决你的问题,请参考以下文章

7-Python3从入门到实战—基础之数据类型(字典-Dictionary)

零基础学PythonDay8 Python基本数据类型之Dictionary

零基础学PythonDay8 Python基本数据类型之Dictionary

01-python3基础-基本数据类型

python3基础二——基本的数据类型一

python基础--基本数据类型(List(列表)--可变数据)