我有一个包含
的词典docs[infile]={'tf':{}, 'idf':{},'words':[], 'tf_idf':{}}
我有一个列表,我想传递一些dict的项目
子字符tf_idf AND idf包含{(word,number),(word,number),...}等数据
我需要在列表中存储tf_idf和idf项。此代码仅存储这2个子字节中的一个。
templist=[]
for key in docs: #stores data in separate list
TF_IDF_buffer = docs[key]['tf_idf'].items()
templist.append(TF_IDF_buffer)
是否可以将它们都存储在列表中?
答案 0 :(得分: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)
答案 1 :(得分: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))
但是,我也在这个论坛上看到了你的其他一些问题。我认为你的嵌套列表和dicts的结构有点复杂。例如,您的单词列表与idf
和tf_idf
中的键重复。
您可能需要考虑使用更多面向对象的方法。
你可以这样定义一个类:
class Document:
def __init__(self, words, idf, tf_idf):
self.words = words
self.idf = idf
self.tf_idf = tf_idf
此外,根据我对使用NLP的记忆,我记得使用collections.defaultdict
非常有用(特别是如果您的idf
和tf_idf
字典很稀疏。)