Python 字典(Dictionary)使用方法及示例代码详解

原创 2025-05-07 10:44:34编程技术
796

字典(Dictionary)是Python中最常用的数据结构之一,它以**键值对(Key-Value)**的形式存储数据,具有高效的查询、插入和删除操作。本文将系统讲解字典的核心用法,结合代码示例演示从基础到高级的实战技巧。

python.webp

一、字典基础:创建与初始化

1. 字典创建语法

# 直接定义
person = {"name": "Alice", "age": 25, "city": "New York"}

# 使用dict()构造函数
empty_dict = dict()
student = dict(name="Bob", age=20, major="CS")

# 动态生成(Python 3.6+保持插入顺序)
data = dict([("a", 1), ("b", 2)])  # 列表生成元组

2. 核心特性

  • 键唯一性:键不可重复,后续重复键会覆盖前值

  • 键不可变:键必须是不可变类型(如字符串、数字、元组)

  • 值可变:值可以是任意数据类型(包括字典)

# 错误示例:列表作为键(会触发TypeError)
invalid = {[1,2]: "value"}  

# 正确示例:元组作为键
valid = {(1,2): "value"}

二、基础操作:增删改查

1. 访问元素

prices = {"apple": 5, "banana": 3}
print(prices["apple"])    # 直接访问(KeyError风险)
print(prices.get("orange", 0))  # 安全访问(返回默认值0)

2. 添加/修改元素

# 添加新键值对
stock = {"apple": 10}
stock["banana"] = 20  # 新增

# 修改现有值
stock["apple"] += 5  # 修改为15

3. 删除元素

# 删除指定键值对
del stock["banana"]

# 弹出并返回键值对
popped = stock.pop("apple", None)  # 避免KeyError

# 清空字典
stock.clear()

三、字典遍历:三种视角

1. 遍历键(Keys)

for key in stock:
    print(f"Key: {key}")

# 等价写法
for key in stock.keys():
    print(key)

2. 遍历值(Values)

for value in stock.values():
    print(f"Value: {value}")

3. 遍历键值对(Items)

for key, value in stock.items():
    print(f"{key} => {value}")

四、高级操作:实用技巧

1. 字典推导式

# 平方数生成
squares = {x: x*x for x in range(5)}  # {0:0, 1:1, ..., 4:16}

# 条件过滤
words = ["apple", "banana", "cherry"]
length_map = {word: len(word) for word in words if len(word) > 5}

2. 合并字典

dict1 = {"a": 1, "b": 2}
dict2 = {"b": 3, "c": 4}

# Python 3.9+
merged = dict1 | dict2  # {"a":1, "b":3, "c":4}

# 通用方法
merged = {**dict1, **dict2}

3. 默认值处理

from collections import defaultdict

# 自动初始化默认值
counter = defaultdict(int)
counter["apple"] += 1  # 不存在时初始化为0

# 嵌套字典默认值
matrix = defaultdict(lambda: defaultdict(int))
matrix["A"][1] = 100

4. 字典排序

# 按值排序
scores = {"Alice": 88, "Bob": 95, "Charlie": 72}
sorted_by_value = dict(sorted(scores.items(), key=lambda x: x[1]))

# 按键排序(反向)
sorted_by_key = dict(sorted(scores.items(), key=lambda x: x[0], reverse=True))

五、实战场景案例

1. 统计词频

text = "hello world hello python world"
words = text.split()

freq = {}
for word in words:
    freq[word] = freq.get(word, 0) + 1

print(freq)  # {'hello':2, 'world':2, 'python':1}

2. 配置管理

config = {
    "database": {
        "host": "localhost",
        "port": 3306,
        "user": "admin"
    },
    "debug_mode": True
}

# 安全获取嵌套配置
db_host = config["database"].get("host", "default_host")

3. 缓存实现

class SimpleCache:
    def __init__(self):
        self.cache = {}
        
    def get(self, key):
        return self.cache.get(key)
    
    def set(self, key, value, ttl=60):
        self.cache[key] = (value, time.time() + ttl)

六、性能优化技巧

  1. 避免KeyError:优先使用get()方法或defaultdict

  2. 内存效率:对于大量数据,考虑使用__slots__或第三方库(如pandas DataFrame)

  3. 哈希冲突:自定义对象作为键时需正确实现__hash__()__eq__()方法


七、常见问题解答

Q1: 字典和列表的查询时间复杂度对比?
A: 字典查询平均O(1),列表查询O(n)。大数据量时字典效率更高。

Q2: 如何判断键是否存在?
A: 使用in关键字:if "key" in my_dict

Q3: 如何获取字典所有键值对的元组列表?
A: list(my_dict.items())


总结

字典是Python中处理键值对数据的瑞士军刀,掌握其核心操作和高级技巧能显著提升编码效率。从基础CRUD到嵌套结构处理,从性能优化到实战场景应用,字典的灵活性使其成为解决复杂问题的首选数据结构。建议通过实际项目练习加深理解,逐步掌握字典的深层特性。

Python 字典 Dictionary
THE END
战地网
频繁记录吧,生活的本意是开心

相关推荐

芝麻交易所中文模式使用方法:手把手教你切换中文界面
新手为什么总卡在英文界面上? 很多粉丝私信我。 说下载了芝麻交易所app。 打开全是英文。 头都大了。 找不到交易按钮。 更别说充币提币了。 语言障碍真让人崩溃。 尤其年纪...
2026-04-02 新闻资讯
168

数字货币的使用方法:手把手教你上手,安全第一
第一步:买币别慌,选对平台是关键 想用数字货币?先得买到手。主流途径就两个:交易所和第三方平台。交易所像Binance、OKX这些,信誉好操作快。注册时得KYC认证,准备好身...
2026-04-02 新闻资讯
159

数字币怎么使用方法:七步搞定数字人民币,新手必看攻略
数字人民币不是加密货币!先搞清这个 很多朋友问“数字币怎么用”,其实呢,这里说的“数字币”特指数字人民币。它可不是比特币或以太坊。数字人民币是央行发行的法定货币,...
2026-04-02 新闻资讯
170

xxpay钱包下载地址及使用方法指南
官方下载地址要认准 根据权威资料,xxpay钱包最新版本是2026年v6.6.55。官方下载链接只有一个:https://www.dayfund.cn/down/756243.html。这是官网直链,别信其他野鸡网站...
2026-04-02 新闻资讯
296

safepal钱包使用方法详解:新手避坑指南,安全操作全攻略
嗨,大家好!我是老K。混币圈7年了。常帮粉丝解决钱包问题。今天聊聊SafePal钱包怎么用。很多新手一上来就慌,担心转错币或丢资产。说白了,安全是命根子。我踩过坑,也看过...
2026-04-02 新闻资讯
168

Python yield 用法大全:轻松掌握生成器与迭代器设计
在Python中,yield关键字是构建生成器的核心工具,它通过状态保存机制实现了高效的内存管理和惰性计算。与传统的迭代器实现相比,yield能将迭代器设计从复杂的类定义简化为直...
2025-09-15 编程技术
1216