我有一个数组a
,我想在编程创建键的同时将每5个值存储在字典中。
例如:
如果有
a=[1,2,3,4,5,6,7,8,9,10]
我希望字典看起来像这样:
d={"first_title":[1,2,3,4,5], "second_title":[6,7,8,9,10]}
编辑:我有成千上万的术语,所以我想循环进行
答案 0 :(得分:3)
字典值可以是任何对象,包括数组。因此,您只需从一个空的dict开始,然后向其中添加数组值即可。
my_dict = {}
year = 1984
for index in range(0, len(a), 5):
my_dict[year] = a[index: index+5]
year += 1
答案 1 :(得分:2)
以下是一些通用的Python解决方案:
from itertools import izip_longest
def grouper(n, iterable, fillvalue=None):
"""grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"""
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
keys = ["first-title", "second-title"]
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = {key: list(group) for key, group in zip(keys, grouper(5, a))}
这使用了石斑鱼食谱(有关详细说明,请参见此answer)。较少使用pythonic的解决方案是使用for循环迭代键和组对:
result = {}
for key, group in zip(keys, grouper(5, a)):
result[key] = group
在两种情况下,输出均为:
{'first-title': [1, 2, 3, 4, 5], 'second-title': [6, 7, 8, 9, 10]}
答案 2 :(得分:2)
怎么样?
输入:
total_child
代码:
a = [1,2,3,4,5,6,7,8,9,10]
keys = [1984, 1985, 1986, 1987]
n = 5
输出:
my_dict = {}
for i in range(len(a)//n):
key = str(keys[i]) if i < len(keys) else "after " + str(keys[-1])
my_dict[key] = a[i*n: (i+1)*n]
print(my_dict)
根据您的用例,您还可以执行以下操作:
{'1984': [1, 2, 3, 4, 5], '1985': [6, 7, 8, 9, 10]}