【发布时间】:2012-03-27 13:22:02
【问题描述】:
您好,我有两个不同的词典。我正在尝试通过删除重复项来合并这两者。这是 2 个列表。
x = [{'relevance': 0.722, 'type': 'Company', 'name': 'Dell'}, {'relevance': 0.314, 'type': 'OperatingSystem', 'name': 'VMs'}, {'relevance': 0.122, 'type': 'Technology', 'name': 'iSCSI'}, {'relevance': 0.266, 'type': 'Company', 'name': 'Force10'}, {'relevance': 0.327, 'type': 'Person', 'name': 'Greg Althaus'}, {'relevance': 0.085, 'type': 'URL', 'name': 'http://Dell.com/OpenStack'}, {'relevance': 0.174, 'type': 'Company', 'name': 'Storage Hardware'}]
y = [{'relevance': u'0.874065', 'type': u'Company', 'name': u'Dell'}, {'relevance': u'0.522169', 'type': u'OperatingSystem', 'name': u'VMs'}, {'relevance': u'0.444586', 'type': u'Person', 'name': u'Rob Hirschfeld'}, {'relevance': u'0.413988', 'type': u'Person', 'name': u'Greg Althaus'}, {'relevance': u'0.376489', 'type': u'FieldTerminology', 'name': u'iSCSI'}, {'relevance': u'0.314059', 'type': u'Company', 'name': u'Force10'}]
我试过了
z = x.update(y)
print x
它给了我这个错误
AttributeError: 'str' object has no attribute 'update'`
我试过了
z = dict(x.items() + y.items())
它给了我这个错误
AttributeError: 'str' object has no attribute 'items'
然后我尝试了
z = dict(x, **y)
它给了我这个错误
TypeError: type object argument after ** must be a mapping, not str
然后我尝试了
z = dict(chain(x.iteritems(), y.iteritems()))
它给了我这个错误
AttributeError: 'str' object has no attribute 'iteritems'
【问题讨论】:
-
您要删除重复的密钥还是重复的
key:value对?无论如何,如您所见,您声明的是strings,而不是列表,请删除双引号 -
x 和 y 都是字符串,不是字典或列表。
-
代码缩进四个空格,普通文本不应该缩进。请花点时间确保您的问题格式正确,以便其他人可以阅读并帮助您。
-
当
x和y两个字典有相同的key时,你想保留哪个字典value? -
您认为错误消息是什么意思?他们对我来说似乎很清楚。您正在使用字符串:
'str' object ...