Python语法:改变/减少defaultdict?

2024-03-29 10:20:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我不确定这个术语是什么,但基本上我有一个defaultdict形式的word_set,它来自解析一些原始数据的函数。你知道吗

我还有其他函数:reduceVal(word_set, min_val)reduceWord(word_set, *args),等等,它们分别删除值小于min\val、其(word)位于[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

我想知道是否有一种更简洁的,或者说是python式的表达方式,而不需要构建一个新的rtn\u集,或者甚至不需要定义一个完整的函数


Tags: 函数原始数据valueargsvalmin结构形式
2条回答

如果你学会使用dict理解,你不需要对所有这些不同的过滤器都有单独的函数。例如,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)

使用dict理解,这里不需要defaultdict

new_dict = {k:v for k, v in word_set.items() if v > value}

在py2.x上,应该使用word_set.iteritems(),因为它返回一个迭代器。你知道吗

相关问题 更多 >