1

我有一个字典,其中包括

docs[infile]={'tf':{}, 'idf':{},'words':[], 'tf_idf':{}}

我有一个列表,我想传递一些 dict 的项目

子字典 tf_idf AND idf 包含数据,例如 {(word, number),(word, number),...}

我需要在列表中存储 tf_idf 和 idf 项目。此代码仅存储这两个子字典中的一个。

templist=[]
for key in docs: #stores data in separate list
    TF_IDF_buffer = docs[key]['tf_idf'].items()
    templist.append(TF_IDF_buffer)

是否可以将它们都存储在列表中?

4

2 回答 2

0

这将连接两个项目序列,保留重复的键:

templist=[]
for key, value in docs.items():
    tf_idf = list(value['tf_idf'].items())
    idf = list(value['idf'].items())
    templist.append(tf_idf + idf)
于 2013-08-06T08:51:56.837 回答
0

我认为这样的东西应该是你正在寻找的

templist=[]
for key in docs: #stores data in separate list
    for word in docs[key]['words']:
         idf = docs[key]['idf']
         tf_idf = docs[key]['tf_idf']
         temp_list.append((word, tf_idf, idf))

但是,我也在这个论坛上看到了你的一些其他问题。我认为您的嵌套列表和字典结构有些复杂。例如,您的单词列表由idf和中的键复制tf_idf

您可能需要考虑使用更面向对象的方法。

你可以像这样定义一个类:

class Document:
     def __init__(self, words, idf, tf_idf):
         self.words = words
         self.idf = idf
         self.tf_idf = tf_idf

另外,根据我使用 NLP 的记忆,我记得 usingcollections.defaultdict可能非常有用(尤其是在您的idftf_idf字典稀疏的情况下)。

于 2013-08-06T08:55:04.650 回答