Skip to content

字典

概念

有序 (在 Python 3.7 及之后)可变键值对集合

  • 键必须是唯一的,相同则覆盖value
  • 键必须是不可变类型:数字 、字符串、 元组

创建

python
# 使用花括号 {} 和冒号 :
my_dict1 = {'name': 'Alice', 'age': 30, 'city': 'New York'}

# 使用 dict() 构造函数
my_dict2 = dict(name='Bob', age=25, city='London')
my_dict3 = dict([('name', 'Charlie'), ('age', 35), ('city', 'Paris')])

# zip 函数结合两个序列
keys = ['name', 'age', 'city']
values = ['Eve', 28, 'Tokyo']
my_dict5 = dict(zip(keys, values))

访问

[]

python
my_dict = {'name': 'Alice', 'age': 30}

print(f"姓名: {my_dict['name']}")  # 姓名: Alice
print(f"年龄: {my_dict['age']}")  # 年龄: 30

get

python
my_dict = {'name': 'Alice', 'age': 30}

print(f"城市 (get): {my_dict.get('city')}")  # 输出 None
print(f"姓名 (get): {my_dict.get('name')}")  # 输出 Alice

操作

修改

python
my_dict = {'name': 'Alice', 'age': 30}

# 修改现有键的值
my_dict['age'] = 31
print(f"修改年龄后: {my_dict}")  # 输出 {'name': 'Alice', 'age': 31}

新增

python
my_dict = {'name': 'Alice', 'age': 30}

# 添加新的键值对
my_dict['city'] = 'New York'
print(f"添加城市后: {my_dict}")  # 输出 {'name': 'Alice', 'age': 30, 'city': 'New York'}

删除

del dictionary[key]:删除指定键值对

python
my_dict = {'name': 'Bob', 'age': 25, 'city': 'London', 'country': 'UK'}

# 使用 del 删除 'city'
del my_dict['city']
print(f"del 'city' 后: {my_dict}")  # 输出 {'name': 'Bob', 'age': 25, 'country': 'UK'}
  • pop(key, default=None) :删除指定键值对
  • **popitem()**删除最后一个
  • **clear()**清空
python
my_dict = {'name': 'Bob', 'age': 25, 'city': 'London', 'country': 'UK'}

# 使用 pop()
del my_dict['age']
print(my_dict)  # {'name': 'Bob', 'city': 'London', 'country': 'UK'}

# 使用 popitem()
my_dict.popitem()
print(my_dict)  # {'name': 'Bob', 'city': 'London'}

# 清空
my_dict.clear()
print(my_dict)  # {}

视图

  • .keys(): 返回包含所有键的视图对象。
  • .values(): 返回包含所有值的视图对象。
  • .items(): 返回包含所有键值对 (元组形式 (key, value)) 的视图对象。
python
my_dict = {'a': 1, 'b': 2, 'c': 3}

keys_view = my_dict.keys()
values_view = my_dict.values()
items_view = my_dict.items()

print(f"键视图: {keys_view}")  # 输出 dict_keys(['a', 'b', 'c'])
print(f"值视图: {values_view}")  # 输出 dict_values([1, 2, 3])
print(f"项视图: {items_view}")  # 输出 dict_items([('a', 1), ('b', 2), ('c', 3)])

# 视图是动态的
my_dict['d'] = 4
print(f"\n字典修改后:")
print(f"键视图: {keys_view}")  # 输出 dict_keys(['a', 'b', 'c', 'd'])
print(f"值视图: {values_view}")  # 输出 dict_values([1, 2, 3, 4])
print(f"项视图: {items_view}")  # 输出 dict_items([('a', 1), ('b', 2), ('c', 3), ('d', 4)])

# 可以将视图转换为列表
key_list = list(keys_view)
print(f"\n键视图转列表: {key_list}")  # 输出 ['a', 'b', 'c', 'd']