字典类型

1.用途:

存放多个由键值组成的键值对,可读,值可改

2,定义:

用{}内用逗号分开多个元素,每个元素都是以key:value的格式,其中value可以是任意类型,而key必须是不可变类型,通常是str类型,而且key不能重复

不可哈希就是可变,可哈希就是不可变

3、dict数据类型转换

字典只有转换成字符串的时候,才可以全部显示键值对。

如果字典转换成元组或者列表或者集合,都是默认生成的为键组成的元组或者列表或者集合。

通过dic.value() 获得值组成的元组或者列表或者集合,

也可以通过dic.items()获得键值而组成的元组或者列表或者集合。
dic = {'name': 'Zara', 'age': 7, 'class': 'First'}

print(str(dic)) # 转换字符,键值对全部转换 {'name': 'Zara', 'age': 7, 'class': 'First'}

print(list(dic)) # 转换列表,默认列表生成键 ['name', 'age', 'class']

print(list(dic.values())) # 获取值生成列表 ['Zara', 7, 'First'] 

print(list(dic.items()))  # 获取键值对生成列表,为元组组成列表,即列表套元组 [('name', 'Zara'), ('age', 7), ('class', 'First')]

4、常用操作+内置方法

优先掌握操作:

4.1、按照key存取值:可存可取

dic = {
    'name': "xiaofang",
    'age': 18,
    'hobby': "Basketball"
}
print(dic['name'])  # xiaofang
print(dic['age'])   # 18
print(dic['hobby']) # Basketable

dic['name'] = "xiaoming"
print(dic) # {'name': 'xiaoming', 'age': 18, 'hobby': 'Basketball'}

dic['love'] = 'liu'
print(dic) # {'name': 'xiaoming', 'age': 18, 'hobby': 'Basketball','love':"liu"}

4.2、长度

dic = {
    'name': "xiaofang",
    'age': 18,
    'hobby': "Basketball"
}
print(len(dic)) # 3

4.3、成员运算

dic = {
    'name': "xiaofang",
    'age': 18,
    'hobby': "Basketball"
}
if 'name' in dic:
    print("内部成员") # 内部成员
    
if "xiaofang" in dic['name']:
    print("内部成员") # 内部成员
    
if "xiaoming" in dic.values():
    print("内部成员") # 内部成员

4.4、删除

4.4.1、单纯删除:del dic[" "]
dic = {
    'name': "xiaofang",
    'age': 18,
    'hobby': "Basketball"
}
del dic['name']
print(dic) # {'age': 18, 'hobby': 'Basketball'}
4.4.2、取走:
dic.pop ( " " )括号内是要删除的key值,返回值为key对应的value
dic = {
    'name': "xiaofang",
    'age': 18,
    'hobby': "Basketball"
}
d = dic.pop("name")
print(d,dic) #xiaofang {'age': 18,'hobby': "Basketball"}
4.4.3、dic.popitem() 随机删除,删除后的值,返回key和value组成的元组
dic = {
    'name': "xiaofang",
    'age': 18,
    'hobby': "Basketball"
}

d = dic.popitem()
print(d,dic) 
# ('hobby', 'Basketball') {'name': 'xiaofang', 'age': 18}

4.5、循环

dic = {
    'name': "xiaofang",
    'age': 18,
    'hobby': "Basketball"
}
for i in dic: #等同于 for i in dic.keys():
    print(i) # 默认输出所有键
#    name
#    age
#    hobby

for i in dic.values():
    print(i) #输出所有键对应的值
# xiaofang
# 18
# Basketball

for i in dic.items(): #输出键值对从而形成的元组
    print(i) 
#    ('name', 'xiaofang')
#    ('age', 18)
#    ('hobby', 'Basketball')

for x,y in dic.items(): #输出的元组分别赋值给x,y,解压赋值操作
    print(x,y)
#    name xiaofang
#    age 18
#    hobby Basketball
    

4.6get()如果key不存在,就默认返回None,也可以设置返回其他值

dic.get("name")

dic = {
    'name': "xiaofang",
    'age': 18,
    'hobby': "Basketball"
}
name = dic.get("name")
print(name) # xiaofang

num = dic.get('oho')
print(num) # None

nba = dic.get('nba','不存在')
print(num) # 不存在

需要掌握的操作:

4.7、dic.update({}) :更新,没有加入,有就更新,字典内可以有几个键值对

dic = {
    'name': "xiaofang",
    'age': 18,
    'hobby': "Basketball"
}
dic.update({"name":"xiaoming"})

print(dic)
# {'name': 'xiaoming', 'age': 18, 'hobby': 'Basketball'}

dic.update({'love':'liu'})

print(dic)
# {'name': 'xiaoming', 'age': 18, 'hobby': 'Basketball', 'love': 'liu'}

案例2
dic = {
    'name': "xiaofang",
    'age': 18,
    'hobby': "Basketball"
}
dic.update({'name':'小明','love':'liu'})
print(dic)
# {'name': '小明', 'age': 18, 'hobby': 'Basketball', 'love': 'liu'}

4.8、{}.formkeys(["1","2"], none) :根据前面列表快速生成key值

dic = {}.fromkeys((1,3),None)
print(dic) # {1: None, 3: None}
dic1 = {}.fromkeys([1,2],None)
print(dic1) # {1: None, 2: None}

4.9、dic.setdefault("name","xxx"):判断字典里面是否有个name这个key,有就不更改,没有就更新字典中的key,value,返回值为:key对应的value

dic = {
    'name': "xiaofang",
    'age': 18,
    'hobby': "Basketball"
}
c = dic.setdefault('name','xiaoming')
print(dic,c)

# {'name': 'xiaofang', 'age': 18, 'hobby': 'Basketball'} xiaofang
d = dic.setdefault('love','liu')

print(dic,d)
#  {'name': 'xiaofang', 'age': 18, 'hobby': 'Basketball', 'love': 'liu'} liu

字典总结:

存放多个值,无序,字典本身可变,字典的key不可变
posted @ 2021-03-29 20:51  此用户名不可用  阅读(94)  评论(0)    收藏  举报