我有一个包含一些词典的列表。我想从此列表中提取字典,并将其添加到新字典中。
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个项目,这是预期的。因此,我不确定为什么当我在部分工作之前只能解除最后一个字典。
答案 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
是否为dict
; dictionary 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)
dictionary is dict
。取而代之的是,检查类型是dict
还是不像type(dictionary) is dict
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)