Python:从列表中提取字典,然后将其复制到另一个字典?

时间:2020-08-05 15:07:29

标签: python list loops dictionary

我有一个包含一些词典的列表。我想从此列表中提取字典,并将其添加到新字典中。

testList = [{"Name":"Jim"},{"Age":"25"},{"Location":"UK"}]

但是,我不能完全正常工作。到目前为止,如果其中找到的条目恰好是字典,我已经尝试了一个简单的for循环来筛选列表并将其更新为新的目标:

for dictionary in testList:
  if dictionary is dict:
    for k, v in dictionary.items(): 
        newDict = {}
        newDict.update(k,v)

我设法使其正常工作,但它似乎仅更新了列表中的最后一个字典条目,而不仅仅是在我尝试较早代码时将它们全部添加到其中。我也尝试将其副本称为'.copy()'方法,但也没有运气。现在,当我打印它时,newDict还是空的!有人知道我在做什么错吗?我会很感激在这里的任何帮助,因为我有种感觉,我离我不太远!我可以打印列表的长度,并看到它有3个项目,这是预期的。因此,我不确定为什么当我在部分工作之前只能解除最后一个字典。

3 个答案:

答案 0 :(得分:0)

这是您的代码的更正版本:

testList = [{"Name":"Jim"},{"Age":"25"},{"Location":"UK"}]

newDict = {}
for dictionary in testList:
  if isinstance(dictionary, dict):
    newDict.update(dictionary)

print(newDict)

注意事项:

  • 初始化newDict 外部循环

  • isinstance来测试dictionary是否为dictdictionary is dict将测试它是否与类型dict是同一对象-这几乎可以确定为False。 (并且仅在有可能不是字典的情况下才需要进行测试。)

  • update的参数是字典。它将复制所有项目,而无需显式循环所有项目。

答案 1 :(得分:0)

我对编程和Python还是很陌生,但这是我的主意。

testList = [{"Name":"Jim"},{"Age":"25"},{"Location":"UK"}]

newDict = {}
for dictionary in testList:
    newDict.update(dictionary)

print(newDict)

我认为引起问题的原因是,您将字典放在for循环内,并且应该在字典外。我希望它能帮助您并且随时纠正我的解决方案。

答案 2 :(得分:-1)

  1. 您不能以这种方式检查:dictionary is dict。取而代之的是,检查类型是dict还是不像type(dictionary) is dict
  2. 您要为列表中的每个元素创建新字典,这将替换旧值。
  3. 更新的语法为newDict.update({k:v}),或者您可以像这样写newDict[k] = v

您可以像这样修改代码。

testList = [{"Name":"Jim"},{"Age":"25"},{"Location":"UK"}]

newDict = {}

for dictionary in testList:
  if type(dictionary) is dict:
    for k, v in dictionary.items(): 
        newDict.update({k: v})

print(newDict)