在这个例子中,我从一个集合中取出字母并将它们附加到字典中,其中字母成为键,文字 1 成为每对的值。
def base_dict_from_set(s):
return reduce(lambda d,e : addvalue(1, e, d), s, dict())
def addvalue(value, key, d):
d[key] = value
return d
>>> base_dict_from_set(set("Hello World!".lower()))
{'o': 1, '!': 1, 'l': 1, 'd': 1, 'w': 1, ' ': 1, 'r': 1, 'e': 1, 'h': 1}
我想知道我是否可以以某种方式摆脱“addvalue”辅助函数并添加元素并在 lambda 函数本身中引用修改后的字典。
addvalue 本身的例程对我来说非常简单,所以我更喜欢这样的东西:
def base_dict_from_set(s):
reutrn reduce(lambda d,e : d[e] = 1, s, dict())
我在 python 方面的经验不多,而且我是从函数式编程的角度出发的。我的目标是了解 python 的功能,但我太缺乏经验,无法正确地表达和谷歌我正在寻找的内容。
最佳答案
您正在尝试做的是 dict.fromkeys
存在的原因:创建一个字典,将每个键映射到相同的常量值。
>>> dict.fromkeys("Hello World!".lower(), 1)
{'h': 1, 'e': 1, 'l': 1, 'o': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1, '!': 1}
无需先将字符串转换为集
,因为任何重复项都会被以下事件覆盖。
(如果常量值是可变的,您应该使用字典理解来确保每个键都获得其自己的可变值,而不是每个键都共享对相同可变值的引用。)
https://stackoverflow.com/questions/69132206/