2013-11-29 141 views
0

说我们有这样的:Python的字典乘法

dict = {1:[2, 3]} 
m = 4 
new = {1:[]} # to save time, the keys in "new" were obtained from "dict" 

我想用“字典”,使“新的”,所以每个值出现在“字典”列表中多次为“M”,使:

new = {1:[2, 2, 2, 2, 3, 3, 3, 3]} # values appear "m" times 

如何通过使用for循环来实现此目的?它让我感到困惑,因为我使用了很多循环,任何帮助将不胜感激。 我宁愿如果你们给出的想法,而不是给我的代码。

回答

0

replicating elements in list应该给你一个关于如何在这种情况下进行的好主意。

Python允许您仅仅通过重复次数来“繁殖”任何想要重复的内容。

编辑:哇..等待 - 你没有发布“列表线程中的复制元素”已经?

3
data = {1: [2,3]} 
m = 4 
new = {k:[n for n in lst for i in range(m)] for k,lst in data.items()} 
2

,如果你不关心顺序:

data = {1: [2,3]} 
m = 4 

# gives {1:[2,3,2,3,2,3,2,3]} 
new_data = { k:v*m for k,v in data.items()} 
0
>>> from itertools import chain, repeat 
>>> data = {1: [2,3]} 
>>> m = 4 
>>> {k: list(chain.from_iterable(repeat(i, m) for i in data[k])) for k in data} 
{1: [2, 2, 2, 2, 3, 3, 3, 3]}