【问题标题】:Multi dimensional dictionary in pythonpython中的多维字典
【发布时间】:2016-08-05 11:38:54
【问题描述】:
#!/usr/bin/python

import sys
from collections import defaultdict
from collections import Counter

new_dic_defaultdict = defaultdict(dict)
#new_dic_defaultdict = defaultdict(int)

file="SMSCDR_POSTPAID_150901235000_10.84.0.29_AS.log"

fp=open(file,"r")
str = fp.readlines();

for line in str:
        array = line.split('|')
        system_id = array[55]
        Origin = array[12]
        TIME = array[0]
        message_id = array[62]
        new_dic_defaultdict[Origin][system_id] = new_dic_defaultdict[Origin].setdefault(system_id, 0) + 1;

print new_dic_defaultdict

这里我可以写二维目录。如果我添加第三个维度,它就不起作用。

Ex: new_dic_defaultdict[Origin][system_id][message_id] = new_dic_defaultdict[Origin][system_id].setdefault(message_id, 0) + 1;

如何解决这个问题

【问题讨论】:

    标签: python python-2.7 python-3.x dictionary


    【解决方案1】:

    你可以像这样使用 defaultdict:

    new_dic_defaultdict = defaultdict(lambda: defaultdict(int))
    

    【讨论】:

    • new_dic_defaultdict[Origin][system_id][message_id][lfr] = new_dic_defaultdict[Origin][system_id][message_id].setdefault(lfr, 0) + 1;如果我使用它在三个维度上工作。但不适用于四维。
    • 如果你想要更多的维度,你可以用类似的方式添加它们:new_dic_defaultdict = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))。但它根本不可读,所以我建议你使用类似github.com/mewwts/addict
    猜你喜欢
    • 2012-11-19
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-16
    • 2015-06-03
    相关资源
    最近更新 更多