字典转换
键转换技术
## 更改键
original = {"name": "John", "age": 30}
transformed = {k.upper(): v for k, v in original.items()}
字典合并方法
## 使用 update() 方法
dict1 = {"a": 1, "b": 2}
dict2 = {"c": 3, "d": 4}
dict1.update(dict2)
## 解包运算符
merged = {**dict1, **dict2}
值操作
## 转换值
prices = {"apple": 0.5, "banana": 0.3}
discounted = {k: v * 0.9 for k, v in prices.items()}
字典过滤
## 过滤字典
original = {"a": 1, "b": 2, "c": 3}
filtered = {k: v for k, v in original.items() if v > 1}
高级转换
graph TD
A[字典转换] --> B[键更改]
A --> C[值修改]
A --> D[合并]
A --> E[过滤]
嵌套字典转换
## 转换嵌套字典
users = {
"user1": {"name": "Alice", "age": 30},
"user2": {"name": "Bob", "age": 25}
}
transformed_users = {
k: {inner_k: inner_v.upper() if isinstance(inner_v, str) else inner_v
for inner_k, inner_v in v.items()}
for k, v in users.items()
}
转换方法
方法 |
描述 |
示例 |
keys() |
获取字典的键 |
list(my_dict.keys()) |
values() |
获取字典的值 |
list(my_dict.values()) |
items() |
获取键值对 |
list(my_dict.items()) |
性能优化
## 高效的字典转换
import collections
## 将字典转换为 defaultdict
regular_dict = {"a": 1, "b": 2}
default_dict = collections.defaultdict(int, regular_dict)
复杂转换
## 分组和聚合
data = [
{"name": "Alice", "category": "A"},
{"name": "Bob", "category": "B"},
{"name": "Charlie", "category": "A"}
]
grouped = {}
for item in data:
category = item['category']
if category not in grouped:
grouped[category] = []
grouped[category].append(item['name'])
最佳实践
- 使用推导式进行简洁的转换
- 避免在迭代期间修改字典
- 对于大型字典考虑性能
- 利用 LabEx 的 Python 转换技术