20天零基础自学Python | Day10 Dict字典用法大全

大家好,我是宁一。

字典是python的一种数据类型,使用大括号{ }将数据包起来,数据之间用英文逗号,隔开。

字典可以存储任意类型对象。每个元素由key : value 两部分组成,我们一般称为键值对。

键指的是key,值指的是value,他们总会成对出现,格式如下:

d = {key1 : value1, key2 : value2 }

1、键和值的特点

(1)键是唯一的,值不需要唯一。

正确示例:

d = {"name1":"宁一","name2":"宁一"}
print(d)
# 输出 {'name1': '宁一', 'name2': '宁一'}

错误示例:

d = {"name":"宁一","name":"喵宁"}
print(d)
# 输出 {'name': '喵宁'}

字典是不允许同一个键出现两次的。这样定义虽然不会报错,但是前面的key会被后面的key覆盖。

(2)键必须是不可变的,值可以取任何数据类型。

键可以取得数据类型有:数字、字符串、元组。

值可以取任何数据类型,比如:字符串、数字、列表、元组、字典、集合等。

了解上面数据类型,可以到主页查看第5课。

正确示例:

# 值可以是列表、字典等
d = {'name':["宁一","喵宁"]}
d = {'name':{"name1":"宁一","name2":"喵宁"}}

错误示例:

# 将列表等可变数据类型放在key的位置是错误的
d = {["宁一", "喵宁"]:"name"}
#报错 TypeError: unhashable type: 'list'
# 换成元组这种不可变数据类型就可以
d = {("宁一", "喵宁"):"name"}

2、字典 列表区别

字典和列表,都是我们后面编程经常用到的数据类型,他们都能存储多个数据。我们来定义一个字典和一个列表。

#字典,命名为d,字典名字是自定义的。
d = {"name":"宁一","age":"1995-07-12","score":100}
#列表
l = ["宁一","1995-07-12",100]

他们的区别有:

(1)查找方式

字典是根据“键”(key)来查找的,比如上面的"name"、"age"、"score"。

d["name"]
# 输出 '宁一'

列表是根据0 1 2这种下标查找的。

l[0]
# 输出 '宁一'

(2)字典无序、列表有序

字典中的元素,可以随便换位置,不会影响我们查找的结果。

列表中的元素,不能随便换位置,不然会影响我们查找的结果。

比如上面我们定义的字典d、列表l。如果前两个元素互换,来看看查找结果。

d["name"]
# 输出 '宁一'
l[0]
# 输出 "1995-07-12"

3、修改字典元素

通过 key 来修改字典中的元素。继续操作上面定义的字典d

# 将key为"name"对应的值改成"喵宁"
d["name"] = "喵宁"
# 将key为"age"对应的值改成26
d["age"] =26
print(d)
# 输出 {'name': '喵宁', 'age': 26, 'score': 100}

4、删除字典或元素

(1)删除字典中的元素

可以通过del方法,后面字典名加中括号[ ],来通过key删除字典元素。

# 删除"name":"宁一"这个键值对
del d["name"]
print(d)
# 输出 {'age': 26, 'score': 100}

(2)清除字典中的所有元素

字典名后面加clear()函数,就会清空字典。注意清空后字典还在,只是里面没有元素了。

d.clear()
print(d)
# 输出 {}

(3)删除字典

还是使用del方法,后面直接加字典名,就会直接删除字典,跟上面clear()函数要区分开。

#删除字典
del d
print(d)
# 报错 NameError: name 'd' is not defined

5、其他常用操作

(1)len() 长度

计算字典中键值对的个数。

d.len()
# 输出  3

(2)keys()

返回包含所有key的列表。

d.keys()   
# 输出 ['name', 'age', 'score']

(3)values()

返回包含所有value的列表。

d.values()   
# 输出 ['宁一', '1995-07-12', 100]

(4)items()

将字典转换为列表。

d.items()
# 输出 [('name', '宁一'), ('age', '1995-07-12'), ('score', 100)]

点击关注,Python入门不迷路~

猜你喜欢

转载自blog.csdn.net/shine_a/article/details/128899410
今日推荐