当前位置:   article > 正文

python中字典的键类型_详解Python字典数据类型

python中字典键的数据类型

字典的定义

dictionary(字典)是除列表以外 Python之中最灵活的数据类型。

字典同样可以用来存储多个数据,通常用于存储描述一个物体的相关信息。

和列表的区别:列表是有序的对象集合,字典是无序的对象集合。

字典用大括号{}定义,以键值对的方式存储数据,键值对之间使用逗号,分隔,键和值之间使用冒号:分隔。

注意点:键key是索引,值value是数据,键必须是唯一的,值可以取任何数据类型,但键只能使用字符串、数字或元组。

以下是字典的示意图

787058-20200814124155228-1016730262.png

实例

xiaoming = {"name": "小明",

"age": 18,

"gender": True,

"height": 1.75}

字典常用操作

1、创建字典

最常用的就是直接用 {} 创建一个字典。

还可以用 fromkeys 方法创建字典。

格式

dictname = dict.fromkeys(list,value=None)

其中,list 参数表示字典中所有键的列表,value 参数表示默认值,如果不写,则为空值 None。

knowledge = ['语文', '数学', '英语']

scores = dict.fromkeys(knowledge, 60)

print(scores)

### {'数学': 60, '语文': 60, '英语': 60}

这种创建方式通常用于初始化字典,设置 value 的默认值。

2、字典取值

xiaoming_dict = {"name": "小明"}

print(xiaoming_dict["name"])

#小明

# 在取值的时候,如果指定的key不存在,程序会报错!

print(xiaoming_dict["name123"])

# KeyError: 'name123'

get 方法返回指定键的值,如果值不在字典中返回默认值。

xiaoming_dict = {"name": "小明"}

print(xiaoming_dict.get("name", '不存在'))

# 小明

print(xiaoming_dict.get("age", '不存在'))

# 不存在

3、字典的增加/修改

xiaoming_dict = {"name": "小明"}

# 如果key不存在,会新增键值对

xiaoming_dict["age"] = 18

print(xiaoming_dict["age"])

# 18

# 如果key存在,会修改已经存在的键值对

xiaoming_dict["name"] = "小小明"

print(xiaoming_dict["name"])

# 小小明

4、字典的删除

pop删除字典中指定的键值对。

xiaoming_dict = {"name": "小明"}

xiaoming_dict.pop("name")

print(xiaoming_dict)

# {}

# 在删除指定键值对的时候,如果指定的key不存在,程序会报错!

xiaoming_dict.pop("name123")

# KeyError: 'name123'

popitem() 用来随机删除一个键值对。

a = {'语文': 89, '英语': 90, '生物': 98, '物理': 89, '化学': 83, '数学': 95, }

a.popitem()

print(a)

# {'语文': 89, '英语': 90, '生物': 98, '物理': 89, '化学': 83}

其实,说 popitem() 随机删除字典中的一个键值对是不准确的,虽然字典是一种无序的列表,但键值对在底层也是有存储顺序的。

popitem() 总是弹出底层中的最后一个键值对,这和列表的 pop() 方法类似,都实现了数据结构中“出栈”的操作。

5、统计键值对数量

xiaoming_dict = {"name": "小明",

"age": 18}

print(len(xiaoming_dict))

# 2

6、合并字典

xiaoming_dict = {"name": "小明",

"age": 18}

temp_dict = {"height": 1.75,

"age": 20}

# 注意:如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对

xiaoming_dict.update(temp_dict)

print(xiaoming_dict)

# {'name': '小明', 'age': 20, 'height': 1.75}

7、清空字典

xiaoming_dict = {"name": "小明",

"age": 18}

xiaoming_dict.clear()

print(xiaoming_dict)

# {}

8、直接赋值和浅复制的区别

dict1 = {'user': 'runoob', 'num': [1, 2, 3]}

# 浅拷贝: 引用对象

dict2 = dict1

# 浅拷贝:深拷贝父对象(一级目录),

# 子对象(二级目录)不拷贝,还是引用

dict3 = dict1.copy()

# 修改 data 数据

dict1['user'] = 'root'

dict1['num'].remove(1)

# 输出结果

print(dict1)

print(dict2)

print(dict3)

#{'user': 'root', 'num': [2, 3]}

#{'user': 'root', 'num': [2, 3]}

#{'user': 'runoob', 'num': [2, 3]}

9、获取字典中特定数据

keys() 方法用于返回字典中的所有键(key)

values() 方法用于返回字典中所有键对应的值(value)

items() 用于返回字典中所有的键值对(key-value)

scores = {'数学': 95, '语文': 89, '英语': 90}

print(scores.keys())

print(scores.values())

print(scores.items())

# dict_keys(['数学', '语文', '英语'])

# dict_values([95, 89, 90])

# dict_items([('数学', 95), ('语文', 89), ('英语', 90)])

在 Python 3.x 中,它们的返回值并不是我们常见的列表或者元组类型,因为 Python 3.x 不希望用户直接操作这几个方法的返回值。

可以使用 list() 函数,将它们返回的数据转换成列表。

a = {'数学': 95, '语文': 89, '英语': 90}

b = list(a.keys())

print(b)

# ['数学', '语文', '英语']

10、字典的循环遍历

依次从字典中获取所有键值对。

xiaoming_dict = {"name": "小明",

"qq": "123456",

"phone": "10086"}

# 变量k是每一次循环中,获取到的键值对的key

for k in xiaoming_dict:

print("%s - %s" % (k, xiaoming_dict[k]))

# name - 小明

# qq - 123456

# phone - 10086

提示:在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的循环遍历需求并不是很多。

在我们的实际开发中,字典和列表非常常见的一个应用场景。

我们用一个字典的多个键值对来描述一个物体的所有相关信息,然后把多个字典放在同一个列表中,通过一个循环遍历,在循环体内部针对每个字典执行相同的操作。

card_list = [

{"name": "张三",

"qq": "12345",

"phone": "110"},

{"name": "李四",

"qq": "54321",

"phone": "10086"}

]

for card_info in card_list:

print(card_info)

# {'name': '张三', 'qq': '12345', 'phone': '110'}

# {'name': '李四', 'qq': '54321', 'phone': '10086'}

787058-20200814124212519-1860801672.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/482084
推荐阅读
相关标签
  

闽ICP备14008679号