字典属于⽆序序列,元素存放⽆序,是通过哈希⽅式进⾏数据存取的,字典是⼀个可变容器,字典中保存⼀个个的键值对:key : value。我们通过key来获取对应的值,很类似我们的汉语字典。
字典的特点是字典中键必须是唯⼀的,必须是不可变类型,字典查找速度⽐较快。
我们可以通过以下的方式创建字典,
d1 = {} # 创建空字典
d2 = {"name":"无主", "age":20, "name":"范围"} # 键相同,则后面的值覆盖前面的值
d3 = dict() # 创建空字典
d4 = dict(a=3, b=4) # 其中a和b为字典的键,3和4为对应的值
我们可以通过以下的方式对字典进行查询,
d1 = {"a":10, "b":20, "c":30}
print(d1["a"]) # 通过键来访问值
print(d1.get("a")) # 使用get()函数访问值
运行结果如下,
10
10
其中,通过键来访问值和使用get()函数访问值的区别在于,在通过键来访问值中,如果键不存在,python会报错。例如,
d1 = {"a":10, "b":20, "c":30}
print(d1["m"])
运行结果如下,
print(d1["m"])
KeyError: 'm'
但是,在通过get()函数访问值中,如果被查询的键不存在,系统不会报错,默认会返回None。例如,
d1 = {"a":10, "b":20, "c":30}
print(d1.get("m"))
运行结果如下,
None
字典中给不存在的键赋值,就是添加。例如,
d1 = {"a":10, "b":20, "c":30}
d1["abc"] = 300
print(d1)
运行结果如下,
{'a': 10, 'b': 20, 'c': 30, 'abc': 300}
我们可以通过以下的方式对字典中的键值对进行删除,
# 通过pop()函数进行删除
d1 = {"a":10, "b":20, "c":30}
d1.pop("a")
print(d1)
# 通过系统关键字del进行删除
d1 = {"a":10, "b":20, "c":30}
del d1["b"]
print(d1)
# 清空字典
d1 = {"a":10, "b":20, "c":30}
d1.clear()
print(d1)
运行结果如下,
{'b': 20, 'c': 30}
{'a': 10, 'c': 30}
{}
我们可以通过update()函数对字典进行合并,
d1 = {"a": 1, "b": 2}
d2 = {"c": 3, "d": 4}
d1.update(d2)
print(d1)
运行结果如下,
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
我们可以以下方式对字典进行遍历,
# 只遍历键
d1 = {"a":10, "b":20, "c":30}
for key in d1.keys():
print(key)
print()
# 只遍历值
d1 = {"a":10, "b":20, "c":30}
for value in d1.values():
print(value)
print()
# 通过键遍历值
d1 = {"a":10, "b":20, "c":30}
for key in d1.keys():
print(key, "----", d1[key])
print()
# 通过items()函数进行遍历
d1 = {"a":10, "b":20, "c":30}
for key, value in d1.items():
print(key, "----", value)
运行结果如下,
a
b
c
10
20
30
a ---- 10
b ---- 20
c ---- 30
a ---- 10
b ---- 20
c ---- 30
字典中的获取键值对个数(len())和成员判断(in)的操作和列表相同。
python中集合的特点是不允许有重复元素,如果添加重复元素,则会⾃动过滤,可以进⾏交集、并集的运算。
集合的本质是一种⽆序且⽆重复元素的数据结构。
我们可以通过以下方式创建集合,
s1 = set() #空集合不能是{},这是字典
print(s1)
s2 = {1,2,3,4}
print(s2)
print(set([1, 2, 3]))
print(set((4, 5, 6)))
print(set("hello"))
print(set({"7": 1, "8": 2, "9": 3})) # 通过字典创建集合,会得到一个键的集合
运行结果如下,
set()
{1, 2, 3, 4}
{1, 2, 3}
{4, 5, 6}
{'h', 'o', 'e', 'l'}
{'7', '8', '9'}
我们可以通过以下方式增加集合中的元素,
# 通过add()函数添加单个元素
s1 = {1, 2, 3, 4}
s1.add(5)
s1.add((6, 7)) # 只能添加元组元素,列表元素和字典元素无法添加
print(s1)
# 通过update()函数添加多个元素
s1 = {1, 2, 3, 4}
s1.update([5, 6, 7])
s1.update({8: 2, 9: 3}) # 将字典的键添加到元素中
s1.update("hello")
print(s1)
运行结果如下,
{1, 2, 3, 4, 5, (6, 7)}
{1, 2, 3, 4, 5, 6, 7, 8, 9, 'o', 'h', 'l', 'e'}
我们可以通过以下方式删除集合中的元素,
# 通过remove()函数删除单个元素
s1 = {1, 2, 3, 4, 5, 6}
s1.remove(1)
print(s1)
# 如果删除元素不存在,则系统报错
# 通过pop()函数删除单个元素
s1 = {1, 2, 3, 4, 5, 6}
s1.pop() # 删除几何中第一个元素
print(s1)
# 通过discard()函数删除单个元素
s1 = {1, 2, 3, 4, 5, 6}
s1.discard(6)
s1.discard(10) # 删除元素不存在,不会报错
print(s1)
运行结果如下,
{2, 3, 4, 5, 6}
{2, 3, 4, 5, 6}
{1, 2, 3, 4, 5}
集合中的获取键值对个数(len())和成员判断(in)的操作和列表相同。
我们可以通过"|"、"&"、和"-"实现集合之间求并集、交集和差集的计算,
s1 = {1, 2, 3, 4}
s2 = {2, 3, 4, 5}
print(s1 | s2) # 并集
print(s1 & s2) # 交集
print(s1 - s2) # 差集
运行结果如下,
{1, 2, 3, 4, 5}
{2, 3, 4}
{1}