从Dictionary python中删除'Counter'

ado*_*tyd 2 python counter dictionary

我正在使用CounterPython中的类来计算大型python字典的键中的单词数.我正在创建一个新的字典,其中键是递增的数字,值是计数器函数的返回值.这是我的新词典的样子:

TP = {1:Counter({u'x':1, u'b':1, u'H':3}),2:Counter({u'j':1, u'm':4, u'e':2})...}
Run Code Online (Sandbox Code Playgroud)

我想做的,如果可能的话,删除Counter和括号(和),以便我的字典看起来像:

TP = {1:{u'x':1, u'b':1, u'H':3}, 2:{u'j':1, u'm':4, u'e':2}...}
Run Code Online (Sandbox Code Playgroud)

如果那是不可能的,有人可以告诉我如何访问()里面的嵌套字典吗?谢谢

jam*_*lak 6

我没有看到这样做的任何意义,Counter是它的一个子类dict并且支持它的所有方法所以你应该没有问题离开它,虽然只是为了这个问题我将它转换回正常dict:

>>> from collections import Counter
>>> tp = {1:Counter({u'x':1, u'b':1, u'H':3}),2:Counter({u'j':1, u'm':4, u'e':2})}
>>> dict((k, dict(v)) for k, v in tp.iteritems())
{1: {u'x': 1, u'b': 1, u'H': 3}, 2: {u'e': 2, u'j': 1, u'm': 4}}
Run Code Online (Sandbox Code Playgroud)

对于Python 2.7+(由@Blender建议)

{k: dict(v) for k, v in tp.iteritems()}
Run Code Online (Sandbox Code Playgroud)

通过子区域迭代,例如:

for w, c in tp[1].iteritems():
    print w, c
Run Code Online (Sandbox Code Playgroud)