假设我有一本字典,我想编辑字典列表,以便重复这样的值。
>>> {'hi':[1,2,3,4], 'bye':[5,6,7,8]}
>>> {'hi':[1,1,2,2,3,3,4,4], 'bye':[5,5,6,6,7,7,8,8]}
和
>>> {'hi':[1,2,3,4,1,2,3,4], 'bye':[5,6,7,8,5,6,7,8]}
我该怎么做? 我假设你需要使用循环,但我似乎无法弄明白。
答案 0 :(得分:1)
这样的事情:
from itertools import chain, repeat
def repeat_whole_list(d, n):
return {k:list(chain.from_iterable(repeat(v, n))) for k, v in d.items()}
def repeat_items(d, n):
return {k:[item for item in v for _ in xrange(n)] for k, v in d.items()}
<强>演示:强>
>>> repeat_whole_list(d, 2)
{'hi': [1, 2, 3, 4, 1, 2, 3, 4], 'bye': [5, 6, 7, 8, 5, 6, 7, 8]}
>>> repeat_items(d, 2)
{'hi': [1, 1, 2, 2, 3, 3, 4, 4], 'bye': [5, 5, 6, 6, 7, 7, 8, 8]}
>>> repeat_whole_list(d, 3)
{'hi': [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4], 'bye': [5, 6, 7, 8, 5, 6, 7, 8, 5, 6, 7, 8]}
>>> repeat_items(d, 3)
{'hi': [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4], 'bye': [5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8]}
答案 1 :(得分:0)
您可以像这样使用词典理解
d = {'hi':[1,2,3,4], 'bye':[5,6,7,8]}
t = 2
print {k:[j for i in zip(*[v for _ in range(t)]) for j in i] for k, v in d.items()}
print {k:v*t for k, v in d.items()}
<强>输出强>
{'hi': [1, 1, 2, 2, 3, 3, 4, 4], 'bye': [5, 5, 6, 6, 7, 7, 8, 8]}
{'hi': [1, 2, 3, 4, 1, 2, 3, 4], 'bye': [5, 6, 7, 8, 5, 6, 7, 8]}
答案 2 :(得分:0)
像这样:
>>> d = {'hi':[1,2,3,4], 'bye':[5,6,7,8]}
>>> def duplicate_lists_in_dict(d):
return {k:v+v for k,v in d.items()}
>>> duplicate_lists_in_dict(d)
{'hi': [1, 2, 3, 4, 1, 2, 3, 4], 'bye': [5, 6, 7, 8, 5, 6, 7, 8]}
就像这样:
>>> d = {'hi':[1,2,3,4], 'bye':[5,6,7,8]}
>>> def double_items_in_dict(d):
return {k:[x for y in zip(v,v) for x in y] for k,v in d.items()}
>>> double_items_in_dict(d)
{'hi': [1, 1, 2, 2, 3, 3, 4, 4], 'bye': [5, 5, 6, 6, 7, 7, 8, 8]}