Python:在字典中存储与键关联的列表值
我知道 Python 字典是怎么存储键值对的。在我正在做的项目中,我需要把一个键和一个列表关联起来。比如说:
键 -> [0,2,4,5,8]
这里,键是一个来自文本文件的单词,而这个列表里的数字代表了这个单词出现的文档编号(DocIDs)。
每当我在另一个文档中找到相同的单词时,我需要把那个文档的编号加到这个列表里。
我该怎么做呢?
6 个回答
1
这篇文章对我解决一个问题很有帮助,那个问题是关于动态创建带有数据列表的变量键。下面是相关内容:
import collections
d = collections.defaultdict(list)
b = collections.defaultdict(list)
data_tables = ['nodule_data_4mm_or_less_counts','nodule_data_4to6mm_counts','nodule_data_6to8mm_counts','nodule_data_8mm_or_greater_counts']
for i in data_tables:
data_graph = con.execute("""SELECT ACC_Count, COUNT(Accession) AS count
FROM %s
GROUP BY ACC_Count"""%i)
rows = data_graph.fetchall()
for row in rows:
d[i].append(row[0])
b[i].append(row[1])
print d['nodule_data_4mm_or_less_counts']
print b['nodule_data_4mm_or_less_counts']
这个代码会输出每个键对应的数据列表,然后可以把这些数据转换成np.array,方便后续的绘图等操作。
>>>[4201, 1052, 418, 196, 108, 46, 23, 12, 11, 8, 7, 2, 1]
>>>[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16]
2
这里可以很好地使用defaultdict
。
from collections import defaultdict
docWords = defaultdict(set)
for docID in allTheDocIDs:
for word in wordsOfDoc(docID):
docWords[word].add(docID)
如果需要的话,你可以用列表来代替集合。
8
你可以使用defauldict,像这样:
>>> import collections
>>> d = collections.defaultdict(list)
>>> d['foo'].append(9)
>>> d
defaultdict(<type 'list'>, {'foo': [9]})
>>> d['foo'].append(90)
>>> d
defaultdict(<type 'list'>, {'foo': [9, 90]})
>>> d['bar'].append(5)
>>> d
defaultdict(<type 'list'>, {'foo': [9, 90], 'bar': [5]})