0
次のコードでは、列見出しに基づいて行からそれにマップされたタプルのリスト内の値を出力しようとしています。しかし、マッピングがうまくいかないように見えて、私が望む値を私に与えてくれない。forループ・ラインからタプルのリストへの値のマッピング?
import itertools as it
def buc(column_headers, tuples):
row_dict = {}
attribs = [1,2]
measure = 10
# generate binary table based on number of columns
binaries = [i for i in it.product(range(2), repeat=(len(attribs)))]
for line in binaries:
line = list(line)
# replace binary of 1 with 'ALL' or 0 with value from input attribs
for index, item in enumerate(line):
if (item == 1):
line[index] = 'ALL'
elif (item == 0):
line[index] = attribs[index]
line.append(measure)
print(line)
# map column values to column heading by index and store in row_dict (e.g. {'A': 1, 'B': 'ALL', 'M': 100})
for i in range(len(line)):
row_dict[column_headers[i]] = line[i]
tuples.append(row_dict)
print(tuples)
次は私が得る電流出力です:
>>> buc(['A', 'B', 'M'], [])
[1, 2, 10]
[1, 'ALL', 10]
['ALL', 2, 10]
['ALL', 'ALL', 10]
[{'A': 'ALL', 'B': 'ALL', 'M': 10}, {'A': 'ALL', 'B': 'ALL', 'M': 10}, {'A': 'ALL', 'B': 'ALL', 'M': 10}, {'A': 'ALL', 'B': 'ALL', 'M': 10}]
私が欲しい正しい出力は、列見出しのインデックスに基づいて行が正しくタプルにマッピングされ、以下、あるべき:
>>> buc(['A', 'B', 'M'], [])
[1, 2, 10]
[1, 'ALL', 10]
['ALL', 2, 10]
['ALL', 'ALL', 10]
[{'A': '1', 'B': '2', 'M': 10}, {'A': '1', 'B': 'ALL', 'M': 10}, {'A': 'ALL', 'B': '2', 'M': 10}, {'A': 'ALL', 'B': 'ALL', 'M': 10}]
どこが間違っていますか?
ああで
を交換してください!不思議ではない!さて、ありがとう! – iteong