Python 如何从两个不同的列表中提取数据
我有两个不同的列表,我需要根据它们的名称从中提取数据,然后将它们相乘 我有以下清单:Python 如何从两个不同的列表中提取数据,python,list,extract,Python,List,Extract,我有两个不同的列表,我需要根据它们的名称从中提取数据,然后将它们相乘 我有以下清单: query_tfidf = [0.8465735902799727, 0.8465735902799727] documents_query = [['Aftonbladet', 'play', 0.0], ['Aftonbladet', 'free', 0.0], ['Radiosporten Play', 'play', 0.10769448286014331], ['Radiosporten Play'
query_tfidf = [0.8465735902799727, 0.8465735902799727]
documents_query = [['Aftonbladet', 'play', 0.0], ['Aftonbladet', 'free', 0.0],
['Radiosporten Play', 'play', 0.10769448286014331], ['Radiosporten Play', 'free', 0.0]]
我需要根据它们的名称对它们进行排序,例如:
{Aftonbladet: {play: 0.0, free: 0.0}, Radiosporten Play: {play: 0.10769448286014331, free: 0.0}
for each name:
dot_product = (play_value * query_tfidf[0]) + (free_value * query_tfidf[1])
query = sqrt((query_tfidf[0])^2 + (query_tfidf[1])^2)
document = sqrt((play_value)^2 + (free_value)^2)
然后我需要从每个数据中提取数据,并与query\u tfidf
相乘,然后计算两个变量。例如:
{Aftonbladet: {play: 0.0, free: 0.0}, Radiosporten Play: {play: 0.10769448286014331, free: 0.0}
for each name:
dot_product = (play_value * query_tfidf[0]) + (free_value * query_tfidf[1])
query = sqrt((query_tfidf[0])^2 + (query_tfidf[1])^2)
document = sqrt((play_value)^2 + (free_value)^2)
我有点绝望,所以我想问一下。我正在使用Python2.7。使用
collections.defaultdict
来聚合数据
from collections import defaultdict
results = defaultdict(dict)
for main_key, key, value in documents_query:
results[main_key][key] = value
# dict(results)
# Out[16]:
# {'Aftonbladet': {'free': 0.0, 'play': 0.0},
# 'Radiosporten Play': {'free': 0.0, 'play': 0.10769448286014331}}
你以后打算用它做什么还不清楚。。。但是你应该自己弄清楚,对吗?使用字典,根据名称和关键字对
文档中的条目进行排序非常简单:
indexedValues = {}
for entry in documents_query:
if entry[0] not in indexedValues:
indexedValues[entry[0]] = {}
indexedValues[entry[0]][entry[1]] = entry[2]
这将为您提供索引值
,这些值与您要求的值类似:
{'Aftonbladet': {'play': 0.0, 'free': 0.0}, 'Radiosporten Play': {'play': 0.10769448286014331, 'free': 0.0}
documents\u query
总是像这样井然有序地进入吗<代码>[key1,'play',val],[key1,'free',val],[key2,'play,val],…
?是的,顺序仍然相同,但那些“play”或“free”是关键字,因此它们的名称可以更改。