我有一个嵌套的列表,用一个元组作为关键字,把字典作为Map表。我正在努力把字典一起zip
,这样它就可以通过Pandas导出到csv文件:
l = [{('A', 'B'): 1}, {('A', 'C'): 2}, {('A', 'D'): 3}]
def dynDictCombiner(item):
# would lambda be faster?
def _combine(item):
key = item.keys()[0]
return key, item[key]
col_keys = ('start', 'stop')
row_keys = ('value')
# syntax error
l = [dict(zip(col_keys + row_keys, k + v)) for ((k, v) :=_combine(item) in l)]
print(l)
l = dynDictCombiner(l)
# import pandas as pd
# df = pd.DataFrame.from_dict(l)
# print(df.shape)
# print(df)
# df.to_csv(path_or_buf='C:/temp/foo.csv', index=False, header=True)
预期输出:
[
{'start': 'A', 'stop': 'B', 'value': 1},
{'start': 'A', 'stop': 'C', 'value': 2},
{'start': 'A', 'stop': 'D', 'value': 3}
]
编辑,不带walrus的功能:
def dynDictCombinerSimple(items):
# would lambda be faster?
def _combine(item):
key = list(item.keys())[0]
return key, (item[key], )
col_keys = ('start', 'stop')
row_keys = ('value', )
result = []
for item in items:
k, v = _combine(item)
result.append(dict(zip(col_keys + row_keys, k + v)))
print(result)
果然出来了:
[{'start': 'A', 'stop': 'B', 'value': 1}, {'start': 'A', 'stop': 'C', 'value': 2}, {'start': 'A', 'stop': 'D', 'value': 3}]
2条答案
按热度按时间dgenwo3n1#
您不需要海象操作员来执行此操作:
h7wcgrx32#
@MafMal:请把所有相关信息都加到问题前面,这样更容易理解,现在最相关的信息都在评论里。
我对你问题的回答是这样解释的:
输出: