实现列表字典

时间:2014-05-07 13:57:00

标签: python list python-2.7 dictionary

我想按如下方式实施列表:

hash_dict={
        'session':{'Hash_path':[],'Hex_hash':[]},
        'meta':{'Hash_path':[],'Hex_hash':[]},
        'packet':{'Hash_path':[],'Hex_hash':[]}
    }

我有一个包含大量数据的列表h​​ash_list,但我想要三种类型的值:session,meta和packet,并希望将上面字典中的值作为列表。

这是否可行,如上所述。 任何帮助表示赞赏。

    for i in range(len(hash_list)):
        if 'sessiondb' in hash_list[i]:
            hash_dict['session']['Hash_path'][i].append(hash_list[i].split(" ")[0].split("=")[1])
            hash_dict['session']['Hex_hash'][i].append(hash_list[i].split(" ")[9].split("=")[1])
    for i in range(len(hash_list)):
        if 'metadb' in hash_list[i]:
            hash_dict['metadb']['Hash_path'][i].append(hash_list[i].split(" ")[0].split("=")[1])
            hash_dict['metadb']['Hex_hash'][i].append(hash_list[i].split(" ")[9].split("=")[1])
    for i in range(len(hash_list)):
        if 'packetdb' in hash_list[i]:
            hash_dict['packetdb']['Hash_path'][i].append(hash_list[i].split(" ")[0].split("=")[1])
            hash_dict['packetdb']['Hex_hash'][i].append(hash_list[i].split(" ")[9].split("=")[1])  

上面的代码显示了我想要在Dictionary中列出的值作为上面定义的列表。 我试过,但我收到错误:“列表索引超出范围”

提前完成。

1 个答案:

答案 0 :(得分:1)

首先定义字典:

hash_dict = {
    'session': {'Hash_path': [], 'Hex_hash': []},
    'meta':    {'Hash_path': [], 'Hex_hash': []},
    'packet':  {'Hash_path': [], 'Hex_hash': []}
}

并直接在您的列表上循环:

for entry in hash_list:
    elems = entry.split()
    path = elems[0].split('=', 1)[-1]
    hash = elems[9].split('=', 1)[-1]

    if 'sessiondb' in entry:
        hash_dict['session']['Hash_path'].append(path)
        hash_dict['session']['Hex_path'].append(hash)

    if 'metadb' in entry:
        hash_dict['meta']['Hash_path'].append(path)
        hash_dict['meta']['Hex_path'].append(hash)

    if 'packetdb' in entry:
        hash_dict['packet']['Hash_path'].append(path)
        hash_dict['packet']['Hex_path'].append(hash)

假设所有三个选项都可以每个条目

如果我们知道您的hash_list数据通常是什么样子,那么很有可能会进一步清理。