如何初始化“泡菜计数器”列表的唯一ID并将其存储在文件中并检索它?

时间:2019-01-17 05:14:43

标签: python file counter pickle id

为Pickle's Counter的输出初始化唯一ID,并将其存储在文件中并检索以供使用。

在MySQL中,您可以初始化主键并将其用作Forigen键。我想在这里使用文件系统做同样的事情。

a = ['a','a','a','a','b','a','b','a','b','a','b', 'a','b','a','b','a','b','c','c','c','c','c','c','c ','c','d','d','e']

b =计数器(a)

b计数器({'a':10,'c':8,'b':7,'d':2,'e':1})

我在b中有83,000个元素

c计数器({'b':3,'d':1,'e':1})

d计数器({'c':4,'b':2,'d':1})

我有20,000个计数器,例如cd

首先,我想为b的所有元素初始化唯一ID,并将其存储在文件中,

然后,我要参考给c的ID,将相同的ID初始化为db,并将它们也存储在文件中。

我只知道如何存储计数器以及如何检索它。现在,我的计数器有一个元素列表及其频率。我想做的是为我的主列表的每个元素初始化一个唯一的ID,在这种情况下为b,我想将其存储在一个文件中:

ID术语频率

1 a 10

2 c 8

3 b 7

4 d 2

很明智。

然后我想在cd上初始化此ID,例如:

对于c

term_id术语频率

3 b 3

4 d 1

以此类推

对于d

term_id术语频率

2 c 4

3 b 2

4 d 1

1 个答案:

答案 0 :(得分:0)

第一个将每个 term 映射到其 id 的make词典 然后使用字典制作所需的列表:

from collections import Counter
a=['a','a','a','a','b','a','b','a','b','a','b','a','b','a','b','a','b','c','c','c','c','c','c','c','c','d','d','e']
b=['a','a','b','a','b','a','b','a','b','d','e']
aCounter=Counter(a)
bCounter=Counter(b)
v=sorted(aCounter.keys()|bCounter.keys())
idDict={item:i for i,item in enumerate(v) }


bresult=[(idDict[item[0]],item[0],item[1]) for item in bCounter.items()]
aresult=[(idDict[item[0]],item[0],item[1]) for item in aCounter.items() ]
print(bresult)
print(aresult)

输出:

  

[(0,'a',5),(1,'b',4),(3,'d',1),(4,'e',1)]
   [(0,'a',10),(1,'b',7),(2,'c',8),(3,'d',2),(4,'e',1) ]

联合使用|来执行。操作员。使用已排序将id = 0分配给'a'