python - 我怎样才能 "map"一个字典只改变 Python 中的值

标签 python functional-programming

我有一个这样的字典:

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/

相关文章:

scala - For 循环 Scala 的快速功能等效项

scala - 使用 fs2.Stream 分组事件

python - 新数据库上的南迁移

python - 如果 Python Pandas 中的索引相互匹配,则减去日期

python - Django静态图像不显示

python - 在一列中存储多个值

java - Clojure 初学者介绍?

python - 将 while 转换为生成器的速度减慢了 3.4 倍

arrays - 反转多维数组 - 函数式编程风格

javascript - 如何从 JSON 返回嵌套在对象中的嵌套 JavaScript 数组的属性值?