Python:在字典中存储与键关联的列表值

2 投票
6 回答
17101 浏览
提问于 2025-04-16 04:02

我知道 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]})

撰写回答