Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 迭代字典中单个键的多个值_Python_Python 2.7_Dictionary - Fatal编程技术网

Python 迭代字典中单个键的多个值

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

我的一个字典包含一个键的多个值。我一直在编写单值的简单字典。我是python新手,不知道如何处理这个问题。我需要更新一个数据库表,其中“field”将是列,值将来自“rows”,如下面的示例所示

“field”键将是相应列的列,“rows”键将是数据库表中的值

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)
,该方法将其保存到数据库中。