Как инициализировать уникальный счетчик Pickle Counter List, сохранить его в файле и извлечь его? - PullRequest
0 голосов
/ 17 января 2019

Инициализация уникального идентификатора на выходе счетчика Pickle, сохранение их в файле и получение их для использования.

В MySQL вы можете инициализировать Первичный ключ и использовать их в качестве Forigen Key. То же самое я хочу сделать здесь, используя файловую систему.

а = [ 'а', 'а', 'а', 'а', 'B', 'а', 'B', 'а', 'B', 'а', 'Ь', «а», «б», «а», «б», «а», «б», «с», «с», «с», «с», «с», «с», "гр », 'с', 'd', 'd', 'е']

б = Счетчик (а)

b Счетчик ({'a': 10, 'c': 8, 'b': 7, 'd': 2, 'e': 1})

У меня более 83 000 элементов в b

Счетчик c ({'b': 3, 'd': 1, 'e': 1})

Счетчик d ({'c': 4, 'b': 2, 'd': 1})

У меня 20 000 счетчиков, таких как c и d

Прежде всего я хочу инициализировать уникальный идентификатор для всех элементов b и сохранить его в файле,

затем я хочу инициализировать идентичные идентификаторы для c и d со ссылкой на идентификаторы, данные для b, и сохранить их также в файле.

Я знаю только, как хранить счетчик и как его получить. Теперь у моего счетчика есть список элементов с их частотой. То, что я хочу сделать, это инициализировать уникальный идентификатор для каждого элемента моего основного списка, который в данном случае b, и я хочу сохранить его в файле, подобном:

ID Term Frequency

1 a 10

2 с 8

3 б 7

4 д 2

Как мудрый.

И затем я хочу инициализировать этот идентификатор в c и d, например:

Для с

term_id term Частота

3 б 3

4 д 1

и т. Д.

Для д

term_id term Частота

2 с 4

3 б 2

4 д 1

1 Ответ

0 голосов
/ 18 января 2019

Сначала создайте словарь, который отображает каждый термин на id Затем используйте словарь, чтобы составить нужные списки:

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) ]

Объединение выполняется с помощью | оператор. используйте sorted для присвоения id = 0 для 'a'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...