我有一个动态生成的数据。数据的输出如下所示,它是字典类型。
dict_items([('date', ['2011-10-31', '2012-05-08']),
('status', ['completed', 'completed']),
('id', ['18', '12']) ])
我需要访问这些数据并将其动态插入数据库。
如何将其转换为可用于插入操作的结构? 我不确定在此之后如何继续。有人可以建议我插入数据库的可能方式。
我希望结构看起来像这样:
{ {date,status,id},{'2011-10-31','completed','18'},
{date,status,id},{'2011-05-08','completed','12'}}
答案 0 :(得分:2)
如果您想输出词典的列表,值中的每个“列”一个,您可以使用zip()
将值转换为分组列:
keys = yourdict.keys()
output = [dict(zip(keys, col)) for col in zip(*yourdict.values())]
演示:
>>> yourdict = {'date': ['2011-10-31', '2012-05-08'], 'id': ['18', '12'], 'status': ['completed', 'completed']}
>>> keys = yourdict.keys()
>>> [dict(zip(keys, col)) for col in zip(*yourdict.values())]
[{'date': '2011-10-31', 'id': '18', 'status': 'completed'}, {'date': '2012-05-08', 'id': '12', 'status': 'completed'}]
如果你真的想输出交错的密钥集,那么你可以这样做:
keys = set(yourdict.keys())
output = [elem for col in zip(*yourdict.values()) for elem in (keys, set(col))]
导致:
>>> keys = set(yourdict.keys())
>>> [elem for col in zip(*yourdict.values()) for elem in (keys, set(col))]
[{'date', 'id', 'status'}, {'completed', '2011-10-31', '18'}, {'date', 'id', 'status'}, {'2012-05-08', 'completed', '12'}]
请注意,我在这里使用了一个列表,而不是(外部)集合,因为它不允许多个{'date', 'id', 'status'}
集合;毕竟,集合中的值是唯一的。
答案 1 :(得分:0)
到某种程度上更新mysql以下格式可能就足够了
t=[('date', ['2011-10-31', '2012-05-08']),
('status', ['completed', 'completed']),
('id', ['18', '12']) ]
dic={i[0]:i[1] for i in t}
lis=[]
for i,j,k in zip(*dic.values()):
lis.append((i,j,k))
print lis
#[('2011-10-31', 'completed', '18'), ('2012-05-08', 'completed', '12')]