Python基础-字典

python

字典的创建

字典是存放一系列键值对的数据结构,对标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基础-字典 的全部内容, 来源链接: utcz.com/z/386990.html

回到顶部