2016-01-07 51 views
0

我的一個字典中包含單個鍵的多個值。我曾經在單一的價值的字典上工作。我是新來的python無法弄清楚如何處理這個。我需要更新一個數據庫表,其中「字段」將作爲列,值將來自「行」,如下面的示例中所示。迭代字典中單個鍵的多個值

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

回答

0

在字典中的單個鍵可以指僅單個值

在你給密鑰u'field'的實例包含一個單一值,其元素的列表即

[u'time',u'met1',u'met2',u'met3',u'met4',u'met5',u'met6',u'met7'] 

因此,爲了訪問存儲在關鍵值列表u'field你應該使用

list_of_elements = dictn[u'field'] 

有後,你可以在所有的元素迭代使用for循環

for element in list_of_elements: 
    # do something 

希望S IN列表這個鏈接可以幫助你

append multiple values for one key in Python dictionary

0

可以遍歷值列表的列表即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 ... 
} 

並在數據庫中保存它。

+0

這不會迭代所有的值,等我看到它與列名和值進行迭代只有一次 – D14

+0

首先,對於dictn ['rows']中的value_lst,將對所有值集合進行迭代,而不僅僅是一個。第二個'dict'(dictn ['field'],value_lst))'列出了列名稱,例如'dictn ['field']'和(單個記錄)值列表,即'value_lst',並返回格式字典我在後面提到我的回答。然後在每次迭代中,對於dictn ['rows']'中的每個記錄,'record_dict'都將是新的,並且將傳遞給一個方法,即'db_model.save(record_dict)',將它保存到數據庫中。 –