table_headers = ['name', 'surname']
table_data = ['andrew', 'smith', 'bob', 'richardson']
len_headers = len(table_headers)
len_data = len(table_data)
result = dict()
for x in range(0, len_data, len_headers):
for key, val in zip(table_headers, table_data[x:x+len_headers]):
if key not in result:
result[key] = []
result[key].append(val)
print(result)
结果
^{pr2}$
编辑:与itertools.cycle()相同
import itertools
table_headers = ['name', 'surname']
table_data = ['andrew', 'smith', 'bob', 'richardson']
result = dict()
for key, val in zip(itertools.cycle(table_headers), table_data):
if key not in result:
result[key] = []
result[key].append(val)
print(result)
编辑:并使用defaultdict()
import itertools
import collections
table_headers = ['name', 'surname']
table_data = ['andrew', 'smith', 'bob', 'richardson']
result = collections.defaultdict(list)
for key, val in zip(itertools.cycle(table_headers), table_data):
result[key].append(val)
print(result)
import json
print(json.dumps(result))
table_headers = ['name', 'surname']
table_data = ['andrew', 'smith', 'bob', 'richardson']
dct = {}
idx = 0
for data in table_data:
key = table_headers[idx]
#Create value as a list
if key in dct.keys():
dct[key].append(data)
else:
dct[key] = [data]
#We need to make sure index of list rolls over to pick the correct element in table_data
idx = int((idx+1)%2)
可能
itertools
中有一些函数可以使它更简单。在我将数据分成更小的部分,并使用
zip(header, part)
来创建对(key,val),并将其添加到字典中结果
^{pr2}$编辑:与
itertools.cycle()
相同编辑:并使用defaultdict()
您需要遍历
table_data
列表,或者选择要添加到name
列表中的值,对于surname
,字典中的值将是一个包含所有姓名和姓氏的列表输出看起来像。在
^{pr2}$或者
假设可以保证表数据有适当数量的数据条目来创建偶数行(根据您的头计数)
您可以使用好的旧json包,通过
相关问题 更多 >
编程相关推荐