0

这是我所拥有的:

item_dictionary = {'10350': 'Third-Age Full', '560':'Death Rune'}

filler = []
for i in range(0,365):
    filler.append(None)

filler1=[]
for i in range(0, 2):
    filler1.append(None)

filler2=[]
for i in range(0, 1):
    filler2.append(None)

names = item_dictionary.values()
names_filled = list(itertools.chain.from_iterable(zip(names, filler1 * len(names))))
#Returns ['Death Rune', None, 'Third-Age Full', None]

names = item_dictionary.values()
names1 = list(itertools.chain.from_iterable(zip(names, filler2 * len(names))))
names_filled = list(itertools.chain.from_iterable(zip(names1, filler1 * len(names))))
#Returns ['Death Rune', None, None, None, 'Third-Age Full', None, None, None]

我正在努力,['Death Rune', None, None, 'Third-Age Full', None, None]但我似乎做不到,有人可以帮我吗?谢谢。

4

3 回答 3

2

怎么样:

In [171]: item_dictionary = {'10350': 'Third-Age Full', '560':'Death Rune'}

In [172]: names = item_dictionary.values()

In [173]: [n for name in names for n in [name, None, None]]
Out[173]: ['Death Rune', None, None, 'Third-Age Full', None, None]

或者如果您想轻松地将Nones 的数量更改为其他值,

In [174]: [n for name in names for n in [name] + [None]*2]
Out[174]: ['Death Rune', None, None, 'Third-Age Full', None, None]
于 2012-11-04T17:08:28.060 回答
1

首先,您可以更轻松地创建这些填充物:

filler = [None] * 365
filler1 = [None] * 2
filler2 = [None]

要真正回答您的问题,您可以压缩两个以上的可迭代对象,因此您可以只压缩第三个填充物:

>>> list(itertools.chain.from_iterable(zip(names, [None] * len(names), [None] * len(names))))
['Third-Age Full', None, None, 'Death Rune', None, None]

然后你也可以使用itertools.zip_longest它根本不需要你扩展那些填充迭代,而只是自动扩展它们(默认情况下zip_longestNone用作它的填充值):

>>> list(itertools.chain.from_iterable(itertools.zip_longest(names, [], [])))
['Third-Age Full', None, None, 'Death Rune', None, None]

或者,正如 unutbu 建议的那样,使用列表理解。

于 2012-11-04T17:14:08.460 回答
0

这不会做你想要的吗?

names_filled = list(itertools.chain.from_iterable([[n,None,None] for n in names])
于 2012-11-04T17:10:05.300 回答