Python 根据键和列表元素的匹配添加字典值

Python 根据键和列表元素的匹配添加字典值,python,arrays,python-3.x,dictionary,Python,Arrays,Python 3.x,Dictionary,我有一个字典列表,如下所示: [{ 'doc1': {'hyundai': 12, 'mercedez': 34, 'bugatti': 2, 'honda': 19}, 'doc2': {'tennis': 20, 'wimbledon': 11, 'nadal': 57}, 'doc3':{'world': , 'politics': 8, 'obama': 7, 'america': 4, 'summit': 14, 'b

我有一个字典列表,如下所示:

[{
 'doc1': {'hyundai': 12,
   'mercedez': 34,
   'bugatti': 2,
   'honda': 19},
 'doc2': {'tennis': 20,
   'wimbledon': 11,
   'nadal': 57}, 
 'doc3':{'world': ,
   'politics': 8,
   'obama': 7,
   'america': 4,
   'summit': 14,
   'budget': 17,
   'germany': 22
}}]
和单词列表
l=[“特朗普”、“美塞德斯”、“温布尔登”、“纳达尔”、“现代”、“网球”]

我只想将列表元素与dictionary的键进行匹配,并将其值的和与最高和一起排序,如果没有匹配的元素,那么对应键的和将为零

预计为


new\u dict={'doc2':88,'doc1':46,'doc3'=0}
您可以使用
.items()进行迭代

然后用同样的方法迭代内部指令

像这样:

d_list=[{'doc1':{'hyundai':12,
“mercedez”:34岁,
布加迪:2,
“本田”:19},
《doc2》:{《网球》:20,
温布尔登:11岁,
“纳达尔”:57},
'doc3':{'world':0,
"政治":8,,
"奥巴马":7,,
"美国":4,,
"峰会":14,,
"预算":17,,
“德国”:22}]
l=[‘特朗普’、‘梅塞德斯’、‘温布尔登’、‘纳达尔’、‘现代’、‘网球’]
结果_d={}
对于单据名称,单据列表[0]中的内部单据。项目()
结果d[doc\u name]=总和(v代表k,v在内部目录项()中,如果k在l中)
新列表=[结果]
打印(新列表)
输出:

[{'doc1': 46, 'doc2': 88, 'doc3': 0}]
试试这个

In[131]:A=[{'doc1':{'hyundai':12,'mercedez':34,'bugatti':2,'honda':19},
…:‘doc2’:{‘网球’:20,‘温布尔登’:11,‘纳达尔’:57},
…:“doc3”:{“世界”:0,“政治”:8,“奥巴马”:7,“美国”:4,“峰会”:14,“预算”:17,“德国”:22}]
在[132]中:B=[‘特朗普’、‘梅塞德斯’、‘温布尔登’、‘纳达尔’、‘现代’、‘网球’]
在[133]中:dict_comprehension={key:sum([value.get(b,0)for b In b])对于key,value In A[0].items()}
在[134]中:result=dict(已排序(dict_comprehension.items(),key=lambda x:x[1],reverse=True))
在[135]中:结果
Out[135]:{'doc2':88,'doc1':46,'doc3':0}

我使用
dict comprehensions

获得了您的预期输出,为什么您的
新列表
甚至是一个列表,如果它只包含一个词典?当您的输入不存在时,为什么它有一个
doc3
条目?您希望对列表或包含的字典进行排序吗?@MisterMiyagi
doc3
的值为0,因为没有列表元素与
doc3
的键匹配。所以,这个和应该是零。是的,我想对字典进行排序。希望你能得到:)我不明白为什么你会有一个包含一个字典的列表?最终的字典应该由键作为doc组成,值是所有匹配值的总和,最后我想根据最高和对它进行排序。@这听起来一点也不坏。我已经写了答案,但我想看看你的尝试