将列表合并到字典中并为其指定特定的键名python 3

时间:2019-02-22 22:25:04

标签: python loops dictionary

我正在使用Python 3以列表的形式返回一些值。这些值可以是浮点数,字符串,甚至是None。例如,我可以有一个像这样的列表:

value = [ None, 1.2, 1.44, 'test', 9 ]

我有一个与该列表中的条目数量匹配的字典,并且我想遍历字典,为该字典添加值并为其指定特定的键。

所以,如果我的字典看起来像这样:

di = [ 
   {'date' : '01/01/2019', 'info' : 'hello' },
   {'date' : '01/02/2019', 'info' : 'world' },
   {'date' : '01/03/2019', 'info' : 'test'  },
   {'date' : '01/04/2019', 'info' : 'no'    },
   {'date' : '01/05/2019', 'info' : 'yes'   }
]

我想遍历value并将每个项目推入di中的特定键中,以使di如下所示:

di = [ 
  {'date' : '01/01/2019', 'info' : 'hello', 'update' : 'None' },
  {'date' : '01/02/2019', 'info' : 'world', 'update' : 1.2    },
  {'date' : '01/03/2019', 'info' : 'test',  'update' : 1.44   },
  {'date' : '01/04/2019', 'info' : 'no',    'update' : 'test' },
  {'date' : '01/05/2019', 'info' : 'yes',   'update' : 9      }
]

我看了其他一些答案,看起来有两种方法可以解决此问题:

方法1:

for k, *v in value:
    data[k]['update'] += v

返回:TypeError: 'NoneType' object is not iterable

方法2:

for i, v in value:
    data[i]['update'] = v

返回:TypeError: 'NoneType' object is not iterable

因此,这个None值(我需要)显然与遍历值有关。有什么方法可以使用Python 3中的一些简单方法来循环value并将该值附加到我的字典中?

1 个答案:

答案 0 :(得分:1)

for newval, dic in zip(values, di):
    dic['update'] = newval

zip是将每个值与需要更新的词典相关联的关键。它使for循环从两个列表中的每个列表中取一个。