把一个字典拆分成多个字典
时间: 2023-11-24 14:08:09 浏览: 206
可以使用 for 循环遍历原始字典中的键值对,然后根据某个条件将它们分配到不同的字典中。
例如,将原始字典中键值对的值为偶数的项分配到一个字典中,将值为奇数的项分配到另一个字典中:
```python
original_dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
even_dict = {}
odd_dict = {}
for key, value in original_dict.items():
if value % 2 == 0:
even_dict[key] = value
else:
odd_dict[key] = value
print(even_dict) # 输出 {'b': 2, 'd': 4}
print(odd_dict) # 输出 {'a': 1, 'c': 3, 'e': 5}
```
在这个例子中,我们遍历了原始字典中的每个键值对,检查它们的值是否为偶数。如果值是偶数,就将它们添加到 even_dict 字典中,否则添加到 odd_dict 字典中。最终,我们打印出了拆分后的两个字典。
相关问题
怎么把两个字符串变成一个字典
在Python中,如果你有两个字符串,通常它们会被视为键值对的形式,可以按照某种分隔符(如冒号`:`, 等号`=`, 或者逗号`,`),将它们组合成一个字典。这里有一个简单的例子:
假设我们有两个这样的字符串:
```python
key_string = 'key1:value1'
value_string = 'value2'
```
你可以先通过字符串分割方法将它们拆分成键和值,然后用`dict()`构造函数创建字典:
```python
keys = key_string.split(':')
values = value_string.split(':') # 这里我们假设两个字符串都是等长的
# 检查键和值的数量是否匹配,如果长度不同,需要额外处理
if len(keys) == len(values):
dict_data = {keys[0]: values[0]} # 只有一个键值对时的情况
else:
print("键值对数量不匹配,无法转换为字典")
```
如果每个字符串都有多个键值对,你可以循环处理:
```python
pairs = [s.split(':') for s in (key_string, value_string)]
dict_data = {pair[0]: pair[1] for pair in zip(*pairs)}
```
这会创建一个字典,其中键是第一个字符串中的键,值是第二个字符串中的对应值。
把一个工作簿按照不同人名拆分成多张工作簿
要将一个工作簿按照不同的人名拆分成多个工作簿,您可以使用openpyxl库以及一些逻辑来实现。以下是一个示例代码:
```python
from openpyxl import load_workbook, Workbook
# 加载工作簿
workbook = load_workbook('input.xlsx')
# 获取要拆分的工作表
sheet = workbook['Sheet1']
# 获取人名所在的列索引
name_column = 'A' # 假设人名在第一列
# 创建一个字典来存储每个人的工作簿
workbooks = {}
# 遍历每一行数据,根据人名拆分到不同的工作簿
for row in sheet.iter_rows(min_row=2, values_only=True):
name = row[0] # 假设人名在第一列
if name not in workbooks:
# 如果该人的工作簿还不存在,则创建一个新的工作簿
workbooks[name] = Workbook()
new_sheet = workbooks[name].active
new_sheet.title = sheet.title
# 拷贝原始工作表的标题行
for header_row in sheet.iter_rows(min_row=1, max_row=1, values_only=True):
new_sheet.append(header_row)
# 将当前行数据拷贝到对应的工作簿
new_sheet = workbooks[name].active
new_sheet.append(row)
# 保存每个人的工作簿
for name, workbook in workbooks.items():
workbook.save(f'{name}.xlsx')
```
此代码将输入文件中的工作表按照人名拆分为多个工作簿,并将每个人的工作簿保存为以其名字命名的文件(例如,John.xlsx、Jane.xlsx等)。请根据实际情况修改代码,以适应您的需求。
阅读全文