Python游戏世界打怪升级之新手指引九【字典】

字典

今天我们来学习以下Python里面的字典dict,它是一种可变的、无序的键值对(key-value)集合,字典的主要特点是

  • 键值对结构,每一个元素都是有一个key一个value组成的
  • 键的唯一性,键必须是唯一的,如果重复;会覆盖前面的键
  • 可变性,可以动态添加、删除、修改键值对
  • 无序性,没有固定的顺序(3.7以上版本会保持插入顺序)

字典的创建

分为以下几种方法

  • 花括号{}
  • dict()函数创建
  • 字典推导式
  • zip()函数
# 花括号
dict_1 = {'jack': 4098, 'sjoerd': 4127}
print(dict_1)  # {'jack': 4098, 'sjoerd': 4127}

# dict()函数创建,下面两种方式是等价的
dict_1 = dict([('foo', 100), ('bar', 200)])
dict_2 = dict(foo=100, bar=200)
print(dict_1) # {'foo': 100, 'bar': 200}
print(dict_2) # {'foo': 100, 'bar': 200}

# 字典推导式
dict_3 = {x:x ** 2 for x in range(5)}
print(dict_3) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

# zip()函数
dict_4 = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
print(dict_4) # {'one': 1, 'two': 2, 'three': 3}

字典的使用

# 字典的使用
# list(d),返回字典d的键列表
print(list(dict_4)) # ['one', 'two', 'three']


# d[key]访问字典的
print(dict_4['one']) # 1

# d[k] = value 可以进行修改;还可以添加新的键值对
dict_4['one'] = 100
print(dict_4) # {'one': 100, 'two': 2, 'three': 3}

dict_4["city"] = "New York"  # 添加新的键值对
print(dict_4)  # 输出: {'one': 100, 'two': 2, 'three': 3, 'city': 'New York'}

# d[key],返回字典d中以key为键的项,不存在则报错
# print(dict_4['two1']) # KeyError: 'two1'

# d.get(key, default=None),避免报错使用get,没有的话会返回default的默认值
print(dict_4.get('123')) # None
print(dict_4.get('111','womeiyou')) # womeiyou


# del d[key],删除;如果映射中不存在 key 则会引发 KeyError
del dict_4['one']
print(dict_4) # {'two': 2, 'three': 3, 'city': 'New York'}

# pop(key,default)删除,如果 key 存在于字典中则将其移除并返回其值,否则返回 default。
# 如果 default 未给出且 key 不存在于字典中,则会引发 KeyError。
pop_dict = dict_4.pop('two')
print(pop_dict) # 2
print(dict_4) # {'three': 3, 'city': 'New York'}

# clear() 移除字典中的所有元素。
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
my_dict.clear()  # 清空字典
print(my_dict)  # 输出: {}

字典的常用操作

# 字典的常用操作
# keys(),获取字典中的所有的key
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
print(my_dict.keys())  # 输出: dict_keys(['name', 'age', 'city'])

# values(),获取字典中所有的value
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
print(my_dict.values())  # 输出: dict_values(['Alice', 25, 'New York'])


# items() 方法获取字典中所有的键值对
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
print(my_dict.items())  # 输出: dict_items([('name', 'Alice'), ('age', 25), ('city', 'New York')])

# len(d),返回字典d的项数
print(len(dict_4)) # 3

# copy(),字典的浅拷贝
my_dict = {"name": "Alice", "age": 25}
new_dict = my_dict.copy()
print(new_dict)  # 输出: {'name': 'Alice', 'age': 25}
print(id(my_dict)) # 2058496698688
print(id(new_dict)) # 2058498797184

# update():用另一个字典的键值对更新当前字典,覆盖原有的键
my_dict = {"name": "Alice", "age": 25}
my_dict.update({"city": "New York", "age": 26})
print(my_dict)  # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York'}


# setdefault(key, default=None) 如果字典存在键 key ,返回它的值。
# 如果不存在,插入值为 default 的键 key ,并返回 default 。 default 默认为 None
my_dict = {"name": "Alice", "age": 25}
dict_5 = my_dict.setdefault("name")
print(dict_5) # Alice
dict_6 = my_dict.setdefault("city", "New York")
print(dict_6) # New York
print(my_dict) # {'name': 'Alice', 'age': 25, 'city': 'New York'}

iter(d)

# iter(d) 返回以字典的键为元素的迭代器。 这是 iter(d.keys()) 的快捷方式
# 获取字典的迭代器
iter_dict = iter(my_dict)
# next()逐个访问,如果迭代器已经遍历完所有元素,再调用 next() 会引发 StopIteration 异常
print(next(iter_dict)) # name
print(next(iter_dict)) # age
print(next(iter_dict)) # city
# print(next(iter_dict)) # StopIteration

# 也可以使用for循环
for k in iter(my_dict):
    print(k, my_dict[k])

"""
name Alice
age 25
city New York
"""
posted @ 2025-03-18 17:31  小鑫仔  阅读(6)  评论(0)    收藏  举报