Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有重复键的字典_Python_Python 2.7_Dictionary_Pymongo - Fatal编程技术网

Python 有重复键的字典

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')} 以上是工作和插入所需的,买我失去了我的复制键值数据的大部分。我知道字典不允许重复的键,但

我想使用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'):
   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…噢,去它的,我会做的。很好。在代码显示之前注释!很好的解决方案,效果不错。非常感谢!您可能会进一步优化此代码,但这是一般概念。没问题!很高兴我能帮忙。