从python字典访问单个元素

时间:2014-07-03 10:51:43

标签: python dictionary

我有一个动态生成的数据。数据的输出如下所示,它是字典类型。

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'}}

2 个答案:

答案 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')]