Python语法:改变/减少defaultdict?
我不确定这个词是什么,但基本上我有一个默认dict形式的Python语法:改变/减少defaultdict?,python,defaultdict,Python,Defaultdict,我不确定这个词是什么,但基本上我有一个默认dict形式的word\u集[(word,value),…],它来自一个解析一些原始数据的函数 我还有其他函数:reduceVal(word\u set,min\u val),reduceWord(word\u set,*args),这些函数分别删除以下对:值小于min\u val,其(word)位于[args]中。它们几乎都遵循相同的结构,例如 def reduceVal(word_set, value): "Returns word_set
word\u集
[(word,value),…],它来自一个解析一些原始数据的函数
我还有其他函数:reduceVal(word\u set,min\u val)
,reduceWord(word\u set,*args)
,这些函数分别删除以下对:值小于min\u 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
我想知道是否有一种更简洁、更通俗的方式来表达这一点,而无需构建新的rtn_集,甚至不需要定义整个函数使用dict理解,
defaultdict
在这里是不需要的:
new_dict = {k:v for k, v in word_set.items() if v > value}
在py2.x上,当它返回迭代器时,您应该使用
word\u set.iteritems()
。如果您学习使用dict理解,您不需要为所有这些不同的过滤器使用单独的函数。例如,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)