首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用dict的dict计数值

用dict的dict计数值
EN

Stack Overflow用户
提问于 2014-03-17 08:48:58
回答 2查看 57关注 0票数 1

我有以下数据:

代码语言:javascript
复制
foo red test
foo red test
foo red test2
foo blue test
bar red test
bar blue test
bar red test2
bar red test2

我想要做的是计算上面的值,从而产生本字典字典:

代码语言:javascript
复制
{
   'bar' : {
              'blue' : {
                          'test': 1
                        },
               'red' : {
                          'test' : 1,
                          'test2': 2
                        }
                   },
          'foo' : {
                     'blue' : {
                                 'test' : 1
                               },
                     'red' => {
                                'test' : 2,
                                'test2' : 1
                              }
                   }
        }

为什么以下代码失败(我使用的是Python2.6.2)

代码语言:javascript
复制
from collections import defaultdict
dictfinal = defaultdict(lambda: defaultdict(dict))
with open('myfileabove.txt','r') as tsvfile:
    csvreader = csv.reader(tsvfile,delimiter=' ')
    for rw in csvreader:
        val1 = rw[0]
        val2 = rw[1]
        val3 = rw[2]
        dictfinal[val1][val2][val3] +=1

在Perl中,可以这样做:https://eval.in/121318

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-17 08:56:56

将dict定义改为:

代码语言:javascript
复制
dictfinal = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
票数 3
EN

Stack Overflow用户

发布于 2014-03-17 09:30:48

作为一种补充,我建议只使用一本词典,而不是嵌套词典。如果将列添加到csv中,则会更好地进行缩放。

代码语言:javascript
复制
from collections import Counter

a = """foo red test
foo red test
foo red test2
foo blue test
bar red test
bar blue test
bar red test2
bar red test2"""

b = Counter(tuple(s.split()) for s in a.splitlines())

# Counter({('foo', 'red', 'test'): 2, ('bar', 'red', 'test2'): 2, ('bar', 'blue', 'test'): 1, ('foo', 'blue', 'test'): 1, ('foo', 'red', 'test2'): 1, ('bar', 'red', 'test'): 1})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22449968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档