Skip to main content
 首页 » 编程设计

python之组合两个具有相同键但不同值类型的字典

2025年05月04日31lvdongjie

我有两个字典,每个字典都有相同的键,但值不同。

food = {'fruit' : 5, 'vegetable' : 2, 'dairy' : 1, 'meat' : 3, 'grain' : 1} 
 
fav = { 'fruit' : ['apple', 'orange', 'banana', 'grape', 'plum'], 
        'vegetable' : ['carrot', 'corn'], 
        'dairy' : ['milk'], 
        'meat' : ['chicken', 'egg', 'beef'], 
        'grain' : ['bread'] 
      } 

我希望达到的结果是这样的,

eats = { 'fruit' : 5, ['apple', 'orange', 'banana', 'grape', 'plum'],  
         'vegetable' : 2, ['carrot', 'corn'], 
       ... 

等等等等

***** 编辑 ********

另外每个字典中的一些条目可能是空的,例如

food = {'fruit' : 5, 'vegetable' : 2, 'dairy' : 1, 'meat' : 3, 'grain' : 1, 'sweets' : 0} 

Sweets 不在 fav 中,那么我如何结合这些字典来保留 sweets,并且不会出现关键错误?

请您参考如下方法:

你可以使用 dict comprehension和元组。我认为你无法得到你期望的输出,因为它不是有效的字典(用逗号分隔相邻键):

eats = {key : (food[key],fav[key]) for key in food} 
 
print(eats) 
{'dairy': (1, ['milk']), 
 'fruit': (5, ['apple', 'orange', 'banana', 'grape', 'plum']), 
 'grain': (1, ['bread']), 
 'meat': (3, ['chicken', 'egg', 'beef']), 
 'vegetable': (2, ['carrot', 'corn'])} 

编辑

对于您的编辑,您需要在 fav 字典中添加检查键:

eats = {key : (food[key],fav[key]) for key in food if key in fav} 

您示例的结果与发布的结果相同。