我不确定这个术语是什么,但基本上我有一个默认字典形式的 word_set
[(word, value), ...]
来自解析一些原始数据的函数。
我还有其他函数:reduceVal(word_set, min_val)
、reduceWord(word_set, *args)
等,用于删除以下对:值小于 min_val,分别在 [args] 中包含它们的(单词)。它们几乎都遵循相同的结构,例如
def reduceVal(word_set, value):
"Returns word_set with (k, v) pairs where v > value)"
rtn_set = defaultdict()
for (k, v) in word_set.items():
if v > value:
rtn_set.update({k:v})
return rtn_set
我想知道是否有一种更简洁或Pythonic的方式来表达这一点,而无需构建新的rtn_set,甚至不需要定义整个函数
最佳答案
如果您学习使用字典推导式,则不需要为所有这些不同的过滤器使用单独的函数。例如,reduceVal
和 reduceWord
可以替换为:
# Python 2.7+
{w: v for w, v in word_set.items() if v > value}
{w: v for w, v in word_set.items() if w in args}
# Python 2.6 and earlier
dict((w, v) for w, v in word_set.iteritems() if v > value)
dict((w, v) for w, v in word_set.iteritems() if w in args)
关于Python语法: mutating/reducing a defaultdict?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18596189/