Python 有重复键的字典
我想使用pyMongo将下面的数据结构插入MongoDB。唯一的问题是,我使用的xml数据有我想要保留的重复键,以及“关键字”和“相关性”子字典键Python 有重复键的字典,python,python-2.7,dictionary,pymongo,Python,Python 2.7,Dictionary,Pymongo,我想使用pyMongo将下面的数据结构插入MongoDB。唯一的问题是,我使用的xml数据有我想要保留的重复键,以及“关键字”和“相关性”子字典键 for entity in root.find('output'): oc_entities[entity.tag] = {'keyword' : entity.text, 'relevance' : entity.get('relevance')} 以上是工作和插入所需的,买我失去了我的复制键值数据的大部分。我知道字典不允许重复的键,但
for entity in root.find('output'):
oc_entities[entity.tag] = {'keyword' : entity.text,
'relevance' : entity.get('relevance')}
以上是工作和插入所需的,买我失去了我的复制键值数据的大部分。我知道字典不允许重复的键,但有点难倒了,作为替代
提前感谢如果存在重复的键,则可以将值设置为列表。这是解决这个问题的一种非常常见的方法
for entity in root.find('output'):
if oc_entities.get(entity.tag):
if type(oc_entities.get(entity.tag)) == 'dict':
oc_entities[entity.tag] = [oc_entities[entity.tag]]
oc_entities[entity.tag].append({'keyword' : entity.text, 'relevance' : entity.get('relevance')})
else:
oc_entities[entity.tag] = {'keyword' : entity.text, 'relevance' : entity.get('relevance')}
谢谢所以我可以在列表中同时有一个键和一个值?(我是Python新手!)。这将是一个dict列表,正如我在上面向您展示的。唯一的问题是,如果只有一个元素,那么它就是一个元素列表。你可以通过输入你的if语句来解决这个问题……我只是太懒了,不想这么做。在else语句中基本上去掉dict周围的括号,然后在if子句中做一个检查,看看元素的类型是否是list…如果不是,那么就把它做成list…噢,去它的,我会做的。很好。在代码显示之前注释!很好的解决方案,效果不错。非常感谢!您可能会进一步优化此代码,但这是一般概念。没问题!很高兴我能帮忙。