数据类型之字典介绍

Posted achai222

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型之字典介绍相关的知识,希望对你有一定的参考价值。

1、作用

字典可以用来存储含有描述性信息的数据,可读性比其他类型高,比如{"name":"wu","age":24}

它是以键值对的形式存储数据

2、定义:{}内用逗号分隔开多个key:value,其中value可以使任意类型,但是key必须是不可变类型,且不能重复

造字典的方式一:

d={k1:111,(1,2,3):222} # d=dict(...)
print(d[k1])
# 111
print(d[(1,2,3)])
# 222
print(type(d))
# <class ‘dict‘>
?
d={} # 默认定义出来的是空字典
print(d,type(d))
# {} <class ‘dict‘>

 

造字典的方式二:

d = dict(x=1, y=2, z=3)
print(d, type(d))
# {‘x‘: 1, ‘y‘: 2, ‘z‘: 3} <class ‘dict‘>

 

 

造字典的方式三:

info = [
    [name, egon],
    (age, 18),
    [gender, male]
]
d = {}
for k, v in info:  # k,v=[‘name‘,‘egon‘],
    d[k] = v
print(d)
# {‘name‘: ‘egon‘, ‘age‘: 18, ‘gender‘: ‘male‘}
info = [
    [name, egon],
    (age, 18),
    [gender, male]
]
res=dict(info) # 一行代码搞定上述for循环的工作
print(res)
# {‘name‘: ‘egon‘, ‘age‘: 18, ‘gender‘: ‘male‘}

 

 

造字典的方式四:快速初始化一个字典

keys=[name,age,gender]
# d={}
# for k in keys:
#     d[k]=None
# print(d)
d={}.fromkeys(keys,None) # 一行代码搞定上述for循环的工作
print(d)
?

 

 

3、数据类型转换

转换成字典需要两层容器类型,并且内层存放数据的形式为每个键值对放在同一个容器内

pyinfo = [
    [name, egon],
    (age, 18),
    [gender, male]
]
res=dict(info) 
print(res)
?
# {‘name‘: ‘egon‘, ‘age‘: 18, ‘gender‘: ‘male‘}
 

 

 

4、内置方法

优先掌握的操作:

1、按key存取值:可存可取

d={k1:111}
?
# 针对赋值操作:如果key存在,则修改
d[k1]=222
?
# 针对赋值操作:如果key不存在,则创建新值
d[k2]=3333
?
print(d)
# {‘k1‘: 222, ‘k2‘: 3333}

 

 

2、长度len

d={k1:111,k2:2222,k1:3333,k1:4444}
print(len(d))
# 4

 

 

3、成员运算in和not in:根据key

d={k1:111,k2:2222}
print(k1 in d)
# True
print(111 in d)         # 只检测key
# False
 

 

4、删除

d={‘k1‘:111,‘k2‘:2222}
4.1 通用删除方法
d={k1:111,k2:2222}
del d[k1]
print(d)

 

 

4.2 pop删除:根据key删除元素,返回删除key对应的那个value值
d={k1:111,k2:2222}
res=d.pop(k2)
print(d)
print(res)

 

 

4.3 popitem删除:python2随机删除,python3删除最后一个,返回元组(删除的key,删除的value)
d={k1:111,k2:2222}
res=d.popitem()
print(d)
# {‘k1‘: 111}
?
print(res)
# (‘k2‘, 2222)

 

 

5、键keys(),值values(),键值对items()

=>在python3中得到的是生成器(老母鸡)

=>在python2中得到的是列表

在python2中
d={k1:111,k2:2222}
?
d.keys()
[k2, k1]
d.values()
[2222, 111]
d.items()
[(k2, 2222), (k1, 111)]
dict(d.items())
{k2: 2222, k1: 111}

 

 

6、for循环

d={k1:111,k2:2222}
for k in d.keys():
    print(k)
# k1
# k2
?
for k in d:
    print(k)
# k1
# k2
?
for v in d.values():
    print(v)
# 111
# 2222
?
for k,v in d.items():
    print(k,v)
# k1 111
# k2 2222
?
print(list(d.keys()))
# [‘k1‘, ‘k2‘]
print(list(d.values()))
# [111, 2222]
print(list(d.items()))
# [(‘k1‘, 111), (‘k2‘, 2222)]

 

 

需要掌握的内置方法

d={‘k1‘:111}

1、d.clear()

清空字典

d = {k1: 111}
d.clear()
print(d)
# {}
 

 

2、d.update()

d={k1:111}
d.update({k2:222,k3:333,k1:111111111111111})
print(d)
# {‘k1‘: 111111111111111, ‘k2‘: 222, ‘k3‘: 333}

 

 

3、d.get() :根据key取值,容错性好

d={k1:111}
print(d[k2])  # key不存在则报错
# KeyError: ‘k2‘
?
print(d.get(k1)) 
# 111
?
print(d.get(k2)) 
# key不存在不报错,返回None

 

 

4、d.setdefault()

info={}
if name in info:
    ... # 等同于pass
else:
    info[name]=egon
print(info)
# {‘name‘: ‘egon‘}
?
?
?
?
?
info = {}
info.setdefault("name", "???")
print(info)
# {‘name‘: ‘???‘}

 


?
?
?
?

 

4.1 如果key有则不添加,返回字典中key对应的值
info = {"name": "wu"}
print(info.setdefault("name", "???"))
# wu
?
print(info)
# {‘name‘: ‘wu‘}

 

 

4.2 如果key没有则添加,返回字典中key对应的值
info = {}
print(info.setdefault("name", "???"))
# ???
?
print(info)
# {‘name‘: ‘???‘}
 

 

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

python基础之数据类型的比较

Python 基础之集合及基本数据类型总结

13 个非常有用的 Python 代码片段

python3从入门到精通之数据类型,布尔类型介绍

Python代码阅读(第19篇):合并多个字典

Python代码阅读(第26篇):将列表映射成字典