作者mikapauli (cablin)
看板Python
標題Re: [問題] 如何寫一個程式可以把dict印出如下的格式
時間Wed Oct 3 21:29:36 2012
def
product(
target):
targets = [list(map(
j.__add__, map(str,
target[
j]))) for
j in
target]
indices = range(len(
targets))
iters = list(map(iter,
targets))
values = list(map(next,
iters))
while True:
print(''.join(
values))
for
i in
indices:
try:
values[
i] = next(
iters[
i])
break
except StopIteration:
iters[
i] = iter(
targets[
i])
values[
i] = next(
iters[
i])
else:
break
※ 引述《kadodo (想辦法突破)》之銘言:
: 如果我的dict如下
: target = {'a': [1,2], 'b': [3,4,5], 'c': [6,7],...}
: 怎麼寫一個程式 不管我的target有多少elements, 就是印出以下內容
: 以我舉的為例子 順序怎樣沒差 重要的是要列出 2x3x2=12種情況(12行)
: a1b3c6
: a1b3c7
: a1b4c6
: a1b4c7
: a1b5c6
: a1b5c7
: a2b3c6
: a2b3c7
: a2b4c6
: a2b4c7
: a2b5c6
: a2b5c7
--
「……私も、…っ、
母様の娘に生まれて…
母様とこれまでともに過ごしてきて…
本当に、
幸せでございました…っ!!」
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.217.2
→ kdjf: itertools.product如何? 10/03 21:45
→ mikapauli:可以阿,練習一下而已w 10/03 21:47
→ kadodo:謝謝兩位熱心的提供了方法 我都會試著用看看~ 10/03 21:52
用itertools的寫法
from itertools import product as p
t = {'a': [1,2], 'b': [3,4,5], 'c': [6,7]}
for i in map(''.join, p(*(map(j.__add__, map(str, t[j])) for j in t))):
print(i)
不知道速度誰比較快(?
※ 編輯: mikapauli 來自: 140.112.233.183 (05/21 13:46)