现在有一个字符串序列(在一个字符串列表中)和很多个代码块。使用一个字典,其键是字符串列表中每一个字符串的哈希值,并且值是包含相应字符串的代码块作为倒排索引。所有包含某字符串的代码块都可以通过查找此字符串的哈希值快速获得
倒排索引。
方法一:
dic = {'a': [1, 2, 3]}
方法二:
dic = {}
dic['a'] = []
dic['a'].append(1)
dic['a'].append(2)
dic['a'].append(3)
print(dic)
# Out:{'a': [1, 2, 3]}
方法三:
collection
库中的defaultdict
方法,好处不需要先创建一个空列表from collections import defaultdict
dic = defaultdict(list)
dic['a'].append(1)
dic['a'].append(2)
dic['a'].append(3)
print(dic)
# Out:defaultdict(<class 'list'>, {'a': [1, 2, 3]})
您没有贴出要处理的数据字典,读您的文字,我感觉我理解可能有偏差,不好举例——
要不,用代码片贴出您的那个字典?
我用我的代码文本,做了个示例,看看是不是您要的效果——
代码运行效果截屏图片
Python 代码
#!sur/bin/nve python
# coding: utf-8
from re import findall
lis = open('/sdcard/qpython/file1.py').readlines()[:11]
mystr = ' '.join([f"{k}: {i[:-1]}" for k,i in enumerate(lis)])
mystr_indexs = findall(r'\d+: ', mystr)
mystr_dict = {}
mystr2 = mystr
for i in range(len(mystr_indexs)-1, -1, -1):
temp = mystr2.split(f"{i}:")
mystr_dict[f"{i}"] = temp[1]
mystr2 = temp[0]
print(f"\n字符串:\n'{mystr}'\n\n生成的字典:\n{mystr_dict}")
lis_dict = {str(i): lis[i] for i in range(len(lis)-1, -1, -1)}
print(f"\n\n字符串列表:\n'{lis}'\n\n生成的字典:\n{lis_dict}")