将dict项附加到Python中的列表中

时间:2013-08-06 08:44:41

标签: python list dictionary append

我有一个包含

的词典
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)

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

2 个答案:

答案 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的结构有点复杂。例如,您的单词列表与idftf_idf中的键重复。

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

你可以这样定义一个类:

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

此外,根据我对使用NLP的记忆,我记得使用collections.defaultdict非常有用(特别是如果您的idftf_idf字典很稀疏。)