【零基础学Python】字典

119 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情


一、字典

这里的字典与日常生活中的字典有一定区别,Python中的字典本质上是键值对,一个键(key)唯一映射一个值(value),通过key迅速中知道value。例如身份证号唯一对应一个人,身份证号就是key,人就是value,通过key就可以确定value。


二、创建字典

类似于创建元组用(),创建列表用[],在创建字典时需要使用{}。

a = {}
print(type(a))

b = dict()
print(type(b))

在这里插入图片描述


下面创建一个包含数据(键值对)的字典来讲解键值对的概念。

a = {
    'id': 1,
    'name': "zhangsan",
    'year': 18
}

print(a)

每组数据以:为分割,前面为键(key),即id、name、year三个字符串,后面为值(value),即1、"zhangsan"、18,它们一一对应。

一个字典中key和value的类型均可以不同,但对于key是什么类型有一定的约束,而对value是什么类型无约束。


三、字典的查找

1.in

类似于列表和元组,用in也可以查找某个key是否在字典中。但要注意,查找的对象一定是key而不是value。

a = {
    'id': 1,
    'name': "zhangsan",
    'year': 18
}

# 1.用in来判定某个key是否在字典中
print('id' in a)
print('height' in a)

# 虽然程序运行后给出False,但这种查找value的操作在逻辑上是有问题的
# 所以最终的结果是没有意义的
print('zhangsan' in a)

运行结果如下,很容易理解。

在这里插入图片描述 同理也可使用not in判断某个key是否不在字典中,用法相同,这里不再赘述。


2.[ ]

字典也可通过[ ]直接访问到某个key对应的value,而且这个操作很容易理解,也很高效。

a = {
    'id': 1,
    'name': "zhangsan",
    'year': 18,
    3.14: 'pi'
}

# 2.用[]直接获取到key对应的value
print(a['id'])
print(a[3.14])
print(a['height'])

结合运行结果可知,用字符串'id'即可访问到对应的value,为1,同理用3.14可访问到'pi'。而当[ ]中的key在字典中不存在时,会直接抛出异常。

在这里插入图片描述


对于字典来说,使用in或者[ ]都是非常高效的,因为它底层的实现用到了哈希的结构。

而对于列表来说,使用in比较低效,因为这是通过遍历来实现的,而使用[ ]非常高效(类似于数组下标)。


四、字典的修改

字典的修改仍是通过[ ]来实现的,但要注意与前面用[ ]查找的区别。

a = {
    'id': 1,
    'name': "zhangsan"
}

# 字典中原本没有'year': 18这一键值对,通过[]将这一数据写入字典
a['year'] = 18
print(a)

# 针对已有的键值对,修改其value
a['year'] = 20
print(a)


# 字典中没有5.2这个key,读取时会报错
print(a[5.2])

第一次和最后一次使用[ ],都是对字典中不存在的数据进行操作,但第一次字典中原本没有'year': 18这一键值对,通过[ ]将这一数据入字典,这一操作是写,所以原本有没有无所谓(即使有也可以修改);而最后一次字典中没有5.2这个key,这一操作是查找,也即操作,那么如果字典中没有,自然会报错。

在这里插入图片描述


删除数据时用到的是pop方法,需要通过字典对象来调用。

a = {
    'id': 1,
    'name': "zhangsan"
}

# 字典中原本没有'year': 18这一键值对,通过[]将这一数据写入字典
a['year'] = 18
print(a)

a['year'] = 20
print(a)

a.pop('id')
print(a)

经过pop方法后,成功删除掉了'id': 1这一键值对,注意不会单单删除掉key,而是整个键值对都被移除。

在这里插入图片描述


五、字典的遍历

遍历仍是用for来进行字典的遍历,且遍历出的结果是有序的,与字典中的插入顺序相同。

a = {
    'id': 1,
    'name': 'zhangsan',
    'year': 18
}

for key in a:
    print(key, a[key])

字典还可以直接通过keys方法获取到所有的key,通过values方法获取到所有的value,以及用items方法获取到所有的键值对。

a = {
    'id': 1,
    'name': 'zhangsan',
    'year': 18
}

print(a.keys())
print(a.values())
print(a.items())

在这里插入图片描述


感谢阅读,如有错误请批评指正