Python语法: mutating/reducing a defaultdict?

标签 python defaultdict

我不确定这个术语是什么,但基本上我有一个默认字典形式的 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,甚至不需要定义整个函数

最佳答案

如果您学习使用字典推导式,则不需要为所有这些不同的过滤器使用单独的函数。例如,reduceValreduceWord 可以替换为:

# 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/

相关文章:

python - 如何在 python pandas 中逐一阅读专栏?

python - Google App Engine 和 string.translate 不起作用

python - 如何为 python 字典中的键设置多个值?

python - 从递归嵌套字段列表创建部分字典

python - KeyError Filling Defaultdict Python

python - pandas:识别条目中的第一个字符是字母还是数字

python - 从 For 循环中的特定点开始

python - 是否可以使用 F2PY 包装共享库中的函数?

MongoDB/PyMongo 不会将 $set 属性设置为文档 - 但会设置所有其他属性! (奇怪的错误)

python - 将参数传递给 defaultdict 创建的对象