我有一个这样的字典:
food_to_food_type = {"apple": "fruit", "green bean": "vegetable", "tomato": "controversial"}
我有一个函数需要一个字典,其中键是食物类型,值是属于我想要的那种类型的食物数量,例如:
num_foods_of_type = {"fruit": 1, "vegetable": 1, "controversial": 1}
在这种情况下,我想要每种类型的食物数量相等,我将用常量表示。
有没有一种简单的方法可以通过获取我的 food_to_food_type
字典的值并将它们用作我的 num_foods_of_type
字典中的键来创建新的字典,设置值每个都是我的常量?
这是我想要的行为:
NUM_FOODS_DESIRED = 1
num_foods_of_type = {}
for food_type in food_to_food_type.values():
num_foods_of_type[food_type] = NUM_FOODS_DESIRED
但我想以函数式方式执行此操作,因此我可以将 food_to_food_type 字典转换为我的函数:
order_food_types(magic_maplike_function(food_to_food_type.values(), NUM_FOODS_DESIRED))
当然,我可以自己编写 magic_maplike_function
,但肯定有一种 Pythonic 的方法可以做到这一点,对吧?
最佳答案
提出了一个绝妙的解决方案here计算 python 列表中出现的次数。 这可以应用于您的案例:
values = food_to_food_type.values()
dict( zip( values, map( values.count, values ) ) )
显然,我没有足够仔细地阅读您的问题。你的意思是这样的:(?)
values = food_to_food_type.values()
dict( zip( values, [NUM_FOOD_TYPES]*len(values) ) )
关于python - 我怎样才能 "map"一个字典只改变 Python 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8254184/