Python 迭代字典中单个键的多个值
我的一个字典包含一个键的多个值。我一直在编写单值的简单字典。我是python新手,不知道如何处理这个问题。我需要更新一个数据库表,其中“field”将是列,值将来自“rows”,如下面的示例所示 “field”键将是相应列的列,“rows”键将是数据库表中的值Python 迭代字典中单个键的多个值,python,python-2.7,dictionary,Python,Python 2.7,Dictionary,我的一个字典包含一个键的多个值。我一直在编写单值的简单字典。我是python新手,不知道如何处理这个问题。我需要更新一个数据库表,其中“field”将是列,值将来自“rows”,如下面的示例所示 “field”键将是相应列的列,“rows”键将是数据库表中的值 dictn = { u'field': [u'time', u'met1', u'met2', u'met3',
dictn = {
u'field': [u'time',
u'met1',
u'met2',
u'met3',
u'met4',
u'met5',
u'met6',
u'met7'],
u'set': 0,
u'messages': [{u'text': u'string',
u'type': u'INFO'}],
u'rows': [[u'2016-01-00:00',
None,
u'0.24',
None,
u'0.24',
None,
u'0.16',
u'60'],
[u'2016-01-00:01:00:00',
None,
u'0.00',
None,
u'0.00',
None,
u'0.003500',
u'60'],
[u'2016-01-00:02:00.00',
None,
u'0.64',
None,
u'0.64',
None,
u'0.26',
u'60']]
}
您可以迭代值列表,即
dictn['rows']
,并使用每个值列表和列名列表,即dictn['field']
将所有记录保存到数据库中
for value_lst in dictn['rows']:
record_dict = dict(zip(dictn['field'], value_lst))
db_model.save(record_dict)
其中,db_model.save()采用以下格式的单个数据库记录的字典
{
u'time': u'2016-01-00:00',
u'met1': None,
... so on for all the fields ...
}
并将其保存在数据库中。字典中的单个键只能引用单个值
for value_lst in dictn['rows']:
record_dict = dict(zip(dictn['field'], value_lst))
db_model.save(record_dict)
在您给出的示例中,键u'field'
包含一个值,该值是元素列表,即
[u'time',u'met1',u'met2',u'met3',u'met4',u'met5',u'met6',u'met7']
因此,为了访问存储在键值u'字段中的列表,您应该使用
list_of_elements = dictn[u'field']
之后,您可以使用for循环遍历列表中的所有元素
for element in list_of_elements:
# do something
希望这个链接可以帮助你
这不会对所有的值进行迭代,我看到它只对列名称和值进行一次迭代,而对dictn['rows']中的值进行一次迭代。第二个dict(zip(dictn['field'],value_lst))
获取列名列表,即dictn['field']
和(单记录)值列表,即value_lst
,并返回我在后面的回答中提到的格式的词典。然后在每次迭代中,record\u dict
对于dictn['rows']`中的每个记录都是新的,并将传递给一个方法,即db\u model.save(record\u dict)
,该方法将其保存到数据库中。