对在列表中的出现
pair's occurrences in a list
我有一本字典,每个会话都有一些特定的查询。键值是特定会话的 ID 号,项值是搜索的查询,如下所示:
1000 , [ Malaria, Cholera ]
1001 , [ Disease, Malaria, Fever]
1002 , [ Fever, Cholera, AIDS, Cancer, Sickness]
1003 , [ Sickness, Disease, Fever, Constipation]
我想找到所有会话的特定查询的同时出现(示例:疾病,2 次:[(发烧,2 次),(疟疾,1 次),(疾病,1 次),(便秘, 1time)]. 我试过那个代码,尝试用我读过的库可以帮助我,itertool:
for x in occurrences.values():
if len(x) > 2:
for y in x:
for pair in itertools.combinations(y, 2):
coccurr[pair]+=1
for k in cooccurr.keys():
print k, len(cooccurr[k])
脚本运行没有错误,但它不打印任何东西,也不是一个空列表。哪个是我的错误?我正确使用 itertools 吗?
from collections import Counter
def findForQuery (queries, value):
related = Counter()
count = 0
for query in queries.values():
if value in query:
count += 1
related.update({item: 1 for item in query if item != value})
return count, related
queries = {
1000: [ 'Malaria', 'Cholera' ],
1001: [ 'Disease', 'Malaria', 'Fever'],
1002: [ 'Fever', 'Cholera', 'AIDS', 'Cancer', 'Sickness'],
1003: [ 'Sickness', 'Disease', 'Fever', 'Constipation']
}
这样使用:
>>> findForQuery(queries, 'Disease')
(2, Counter({'Fever': 2, 'Malaria': 1, 'Constipation': 1, 'Sickness': 1}))
>>> findForQuery(queries, 'Sickness')
(2, Counter({'Fever': 2, 'AIDS': 1, 'Constipation': 1, 'Cancer': 1, 'Disease': 1, 'Cholera': 1}))
我有一本字典,每个会话都有一些特定的查询。键值是特定会话的 ID 号,项值是搜索的查询,如下所示:
1000 , [ Malaria, Cholera ]
1001 , [ Disease, Malaria, Fever]
1002 , [ Fever, Cholera, AIDS, Cancer, Sickness]
1003 , [ Sickness, Disease, Fever, Constipation]
我想找到所有会话的特定查询的同时出现(示例:疾病,2 次:[(发烧,2 次),(疟疾,1 次),(疾病,1 次),(便秘, 1time)]. 我试过那个代码,尝试用我读过的库可以帮助我,itertool:
for x in occurrences.values():
if len(x) > 2:
for y in x:
for pair in itertools.combinations(y, 2):
coccurr[pair]+=1
for k in cooccurr.keys():
print k, len(cooccurr[k])
脚本运行没有错误,但它不打印任何东西,也不是一个空列表。哪个是我的错误?我正确使用 itertools 吗?
from collections import Counter
def findForQuery (queries, value):
related = Counter()
count = 0
for query in queries.values():
if value in query:
count += 1
related.update({item: 1 for item in query if item != value})
return count, related
queries = {
1000: [ 'Malaria', 'Cholera' ],
1001: [ 'Disease', 'Malaria', 'Fever'],
1002: [ 'Fever', 'Cholera', 'AIDS', 'Cancer', 'Sickness'],
1003: [ 'Sickness', 'Disease', 'Fever', 'Constipation']
}
这样使用:
>>> findForQuery(queries, 'Disease')
(2, Counter({'Fever': 2, 'Malaria': 1, 'Constipation': 1, 'Sickness': 1}))
>>> findForQuery(queries, 'Sickness')
(2, Counter({'Fever': 2, 'AIDS': 1, 'Constipation': 1, 'Cancer': 1, 'Disease': 1, 'Cholera': 1}))