python - 将列表中的元素附加到一个列表,然后在另一个列表旁边
问题描述
我正在尝试解决这个问题,字典中的每个值最多可以有 5 个元素。原始代码是:
dict1 = {
"a": []
"b": []
"c": []
}
mainlist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
预期输出:
dict1 = {
"a": [1, 2, 3, 4, 5]
"b": [6, 7, 8, 9, 10]
"c": [11, 12]
}
编辑:我不能使用理解或 zip() 或中断。并且解决方案必须有一个 for 循环。
解决方案
最简单的就是直接做
dictionary = {"a": [], "b": [], "c": []}
mainlist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
dictionary["a"] = mainlist[:5]
dictionary["b"] = mainlist[5:10]
dictionary["c"] = mainlist[10:]
对于更多元素,您可以range(0, len(...), 5)
使用[i:i+5]
dictionary = {"a": [], "b": [], "c": []}
mainlist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
for key, i in zip(dictionary.keys(), range(0, len(mainlist), 5)):
dictionary[key] = mainlist[i:i+5]
编辑:
您还可以对列表进行切片并始终获取前 5 个元素,然后将其删除 - 但这会破坏此列表
dictionary = {"a": [], "b": [], "c": [], "d":[]}
mainlist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
# you may need to duplicate list to keep original list
#original_list = mainlist.copy()
for key in dictionary.keys():
dictionary[key] = mainlist[:5] # get first 5 elements
mainlist = mainlist[5:] # remove first 5 elements
顺便说一句:可能存在一个问题 - 字典不必保持顺序(并且在较旧的 Python 中它没有保持它)因此.key()
可能会以不同的顺序给出值。
推荐阅读
- python - 如何在 django 信号中以编程方式更新 m2m 字段
- java - Spring + MySQL 记录被复制而不是更新
- javascript - Intrexx - 通过 javascript 触发工作流
- php - Json 字符串在 2032 字节处被截断
- firebase - Flutter Firestore:通过参数更新对象数组
- .net-5 - BLAZOR WASM 自定义 RouteView 渲染被调用两次
- karate - 空手道:尝试在空手道中使用 js 方法 toString() 将数组转换为字符串
- php - Laravel 包迁移类找不到兄弟类
- maven - 单元 5 升级后 mvn 验证时 Jacoco 覆盖报告为空
- python - 在 Pytorch 中从 GPU/CPU 中删除模型