首页 > 解决方案 > 将列表中的元素附加到一个列表,然后在另一个列表旁边

问题描述

我正在尝试解决这个问题,字典中的每个值最多可以有 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 循环。

标签: python

解决方案


最简单的就是直接做

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()可能会以不同的顺序给出值。


推荐阅读