首页 > 编程语言 > 详细

Python基础-字典

时间:2020-06-22 19:15:51      阅读:87      评论:0      收藏:0      [点我收藏+]

字典的创建

字典是存放一系列键值对的数据结构,对标js中的对象,也对标java中的map。

现实中的例子就是通讯录,根据这个人的名字就可以得到他的电话号码。

 

定义字典的写法跟js中定义对象是一样的,两边花括号,中间key:value,区别在于js定义对象的时候key可以不用引号。

person = {"Bob":"13113113111","Mary":"13113113112","Mark":"13113113113"}
print(person)

打印结果:
{‘Bob‘: ‘13113113111‘, ‘Mary‘: ‘13113113112‘, ‘Mark‘: ‘13113113113‘}

 

我们还可以使用dict函数来创建字典:

person = dict(name="小明",age=18)
print(person)

打印结果:
{‘name‘: ‘小明‘, ‘age‘: 18}

 

它还允许我们将其他序列转化成字典

item = [(name,小明),(age,18)]
person = dict(item)
print(person)

打印结果:
{‘name‘: ‘小明‘, ‘age‘: 18}

 

字典的基本操作

访问字典中的值

字典中的元素都是key-value的形式存放的,所以要访问某一个value,就要用到对应的key,写法是用中括号:

person = {name : 小明, age : 18}
print(person[name])

打印结果:
小明

 

你还可以使用get方法来访问值:

person = {name : 小明, age : 18}
print(person.get(name))

打印结果:
小明

 

他们的区别在于,使用get方法如果访问一个不存在的key,它会返回None,而使用中括号访问一个不存在的key,会报错。

 

还有一个有意思的方法 setdefault,它的作用是获取一个key对应的value,如果这个key存在,那么获取值,如果不存在,那么获取默认值,并往字典中插入这个key。

person = {name : 小明, age : 18}
value = person.setdefault(sex,未知)
print(value)
print(person)

打印结果:
未知
{‘name‘: ‘小明‘, ‘age‘: 18, ‘sex‘: ‘未知‘}

 

获取字典长度

len方法几乎可以对任何数据进行长度计算,字典中每一对key-value就算做一个长度

person = {name : 小明, age : 18}
print(len(person))

打印结果:
2

 

添加键值对

字典是动态结构,可以自由添加键值对。

person = {name : 小明, age : 18}
person[sex] = 
print(person)

打印结果:
{‘name‘: ‘小明‘, ‘age‘: 18, ‘sex‘: ‘男‘}

 

修改字典中的值

修改和添加一样的,只不过如果你的key在字典中不存在,那么就添加,如果存在,那么就修改。

person = {name : 小明, age : 18}
person[age] = 15
print(person)

打印结果:
{‘name‘: ‘小明‘, ‘age‘: 15}

 

删除键值对

删除字典中的元素用del关键字,跟删除列表中的元素是一样的用法。

person = {name : 小明, age : 18}
del person[age]
print(person)

打印结果:
{‘name‘: ‘小明‘}

 

检查key是否存在

person = {name : 小明, age : 18}
if(name in person):
    print(这个key是存在的)
else:
    print(这个key是不存在的)

打印结果:
这个key是存在的

 

字典常用方法

清空字典内容 clear()

clear方法用于删除字典中的所有元素,是直接对原字典执行,方法本身不会有返回值。

person = {name : 小明, age : 18}
person.clear()
print(person)

打印结果:
{}

 

浅复制 copy()

copy方法返回一个新字典,包含的键值对跟原来的字典完全相同。但是它只是拷贝字典中的一级对象,对于第二级对象,它只是引用。

我们实验一下,让字典里面存列表,拷贝之后再修改列表中的值

x = {name : 小明, age : [11,12,13]}
y = x.copy()
y[name] = 大明
y[age][1] = 100
print(x)
print(y)

打印结果:
{‘name‘: ‘小明‘, ‘age‘: [11, 100, 13]}
{‘name‘: ‘大明‘, ‘age‘: [11, 100, 13]}

 

深复制 deepcopy()

from copy import deepcopy
x = {name : 小明, age : [11,12,13]}
y = deepcopy(x)
y[name] = 大明
y[age][1] = 100
print(x)
print(y)

打印结果:
{‘name‘: ‘小明‘, ‘age‘: [11, 12, 13]}
{‘name‘: ‘大明‘, ‘age‘: [11, 100, 13]}

 

获取所有键 keys()

keys方法返回的是一个迭代器,可以用list方法将它转换成列表

person = {name : 小明, age : 18}
print(list(person.keys()))

打印结果:
[‘name‘, ‘age‘]

 

所谓的迭代器,就是可以直接用来循环的对象

person = {name : 小明, age : 18}
for item in person.keys():
    print(item)

打印结果:
name
age

 

获取所有值 values()

person = {name : 小明, age : 18}
print(list(person.values()))

打印结果:
[‘小明‘, 18]

 

弹出字典中的元素 pop()

弹出的意思其实就是 获取+删除 两个操作的组合。

person = {name : 小明, age : 18}
value = person.pop(age)
print(value)
print(person)

打印结果:
18
{‘name‘: ‘小明‘}

 

遍历字典 items()

items方法返回一个字典视图的迭代器,包含了字典中所有的键值对,每个键值对都是以元组的形式存在

person = {name : 小明, age : 18}
y = person.items()
for item in y:
    print(item)

打印结果:
(‘name‘, ‘小明‘)
(‘age‘, 18)

 

如果你想进一步取里面的数据,也可以这么写:

person = {name : 小明, age : 18}
y = person.items()
for k,v in y:
    print(k + --- + str(v))

打印结果:
name---小明
age---18

 

Python基础-字典

原文:https://www.cnblogs.com/fengyumeng/p/13178378.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!