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]

Noneまたは、 の数を他の値に簡単に変更したい場合は、

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]

実際に問題に答えるには、2 つ以上の iterable を zip することができるので、3 つ目のフィラーを zip するだけで済みます。

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

そして、 which を使用itertools.zip_longestして、これらのフィラー iterable をまったく展開する必要はありませんが、自動的に展開するだけです (デフォルトでは fillvalue としてzip_longest使用されます)。None

>>> 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 に答える