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

Python:在字典中存储与键关联的列表值,python,information-retrieval,Python,Information Retrieval,我知道python字典如何存储key:value元组。在我正在处理的项目中,我需要存储与列表中的值关联的键。 前任: 键->[0,2,4,5,8] 哪里 关键字是来自文本文件的单词 列表值包含表示单词出现的docid的int 一旦我在另一个文档中找到相同的单词,我需要将该文档ID附加到列表中 我怎样才能做到这一点呢?如果我答对了你的问题,你可以试试这个 >>> a=({'a':1,'b':2}); >>> print

我知道python字典如何存储key:value元组。在我正在处理的项目中,我需要存储与列表中的值关联的键。 前任: 键->[0,2,4,5,8] 哪里 关键字是来自文本文件的单词 列表值包含表示单词出现的docid的int

一旦我在另一个文档中找到相同的单词,我需要将该文档ID附加到列表中


我怎样才能做到这一点呢?

如果我答对了你的问题,你可以试试这个

           >>> a=({'a':1,'b':2});
           >>> print a['a']
            1
           >>> a.update({'a':3})
           >>> print a['a']
            3
            >>> a.update({'c':4})
            >>> print a['c']
             4

这将适用于较旧版本的python

如果我没弄错你的问题,你可以试试这个

           >>> a=({'a':1,'b':2});
           >>> print a['a']
            1
           >>> a.update({'a':3})
           >>> print a['a']
            3
            >>> a.update({'c':4})
            >>> print a['c']
             4
这将适用于较旧版本的python

类似的东西


word = 'something'
l = [0,2,4,5,8]
myDict = {}
myDict[word] = l

#Parse some more

myDict[word].append(DocID)
像这样的


word = 'something'
l = [0,2,4,5,8]
myDict = {}
myDict[word] = l

#Parse some more

myDict[word].append(DocID)

这是个好地方


如果有必要,您可以使用列表而不是集合。这将是一个很好的使用位置


如果必须,您可以使用列表而不是集合。您可以使用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]})
>>> foo = listdict()
>>> foo[1]
[]
>>> foo.update([(1, "a"), (1, "b"), (2, "a")])
>>> foo
defaultdict(<type 'list'>, {1: ['a', 'b'], 2: ['a']})
导入集合 >>>d=集合.defaultdict(列表) >>>d['foo'].附加(9) >>>d defaultdict(,{'foo':[9]}) >>>d['foo'].追加(90) >>>d defaultdict(,{'foo':[9,90]}) >>>d['bar'].追加(5) >>>d defaultdict(,{'foo':[9,90],'bar':[5]})
您可以使用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]})
>>> foo = listdict()
>>> foo[1]
[]
>>> foo.update([(1, "a"), (1, "b"), (2, "a")])
>>> foo
defaultdict(<type 'list'>, {1: ['a', 'b'], 2: ['a']})
导入集合 >>>d=集合.defaultdict(列表) >>>d['foo'].附加(9) >>>d defaultdict(,{'foo':[9]}) >>>d['foo'].追加(90) >>>d defaultdict(,{'foo':[9,90]}) >>>d['bar'].追加(5) >>>d defaultdict(,{'foo':[9,90],'bar':[5]})
我曾经编写过一个助手类,使@Vinko Vrsalovic更易于使用:

class listdict(defaultdict):
    def __init__(self):
        defaultdict.__init__(self, list)

    def update(self, E=None, **F):
        if not E is None:
            try:
                for k in E.keys():
                    self[k].append(E[k])
            except AttributeError:
                for (k, v) in E:
                    self[k].append(v)
        for k in F:
            self[k].append(F[k])
可以这样使用:

>>> 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]})
>>> foo = listdict()
>>> foo[1]
[]
>>> foo.update([(1, "a"), (1, "b"), (2, "a")])
>>> foo
defaultdict(<type 'list'>, {1: ['a', 'b'], 2: ['a']})
foo=listdict() >>>傅[1] [] >>>foo.update([(1,“a”),(1,“b”),(2,“a”)] >>>福 defaultdict(,{1:['a',b'],2:['a']})
我曾经编写过一个助手类,使@Vinko Vrsalovic更易于使用:

class listdict(defaultdict):
    def __init__(self):
        defaultdict.__init__(self, list)

    def update(self, E=None, **F):
        if not E is None:
            try:
                for k in E.keys():
                    self[k].append(E[k])
            except AttributeError:
                for (k, v) in E:
                    self[k].append(v)
        for k in F:
            self[k].append(F[k])
可以这样使用:

>>> 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]})
>>> foo = listdict()
>>> foo[1]
[]
>>> foo.update([(1, "a"), (1, "b"), (2, "a")])
>>> foo
defaultdict(<type 'list'>, {1: ['a', 'b'], 2: ['a']})
foo=listdict() >>>傅[1] [] >>>foo.update([(1,“a”),(1,“b”),(2,“a”)] >>>福 defaultdict(,{1:['a',b'],2:['a']})
这篇文章帮助我解决了动态创建带有数据列表的变量键的问题。见下文:

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]

这篇文章帮助我解决了我在动态创建带有数据列表的变量键时遇到的一个问题。见下文:

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]

默认dict是在python的最新版本中引入的。例如,从2.5开始,因此代码可能不适用于较旧的版本。我认为他的意思是“defaultdict(set)”而不是“defaultdict(set)”,但我支持这个想法。默认dict是在python的最新版本中引入的。即,从2.5开始,因此代码可能不适用于较旧的版本。我认为他的意思是“defaultdict(set)”不是“defaultDict(set)”,但我支持这个想法。太好了!这很有效。那么,收藏到底是什么呢?这是一个全新的数据结构吗?@csguy11:
collections
是一个提供一些数据结构的标准模块。实际上,我为一个我经常使用它的项目编写了一个特殊的
listdict
。它的行为类似于
defaultdict(list)
,但是
update
-方法会附加新值,而不是覆盖它们。太棒了!这很有效。那么,收藏到底是什么呢?这是一个全新的数据结构吗?@csguy11:
collections
是一个提供一些数据结构的标准模块。实际上,我为一个我经常使用它的项目编写了一个特殊的
listdict
。它的行为类似于
defaultdict(list)
,但是
update
-方法会附加新值,而不是覆盖它们。-1您没有正确回答他的问题。OP希望值是一个列表,并将新的数字附加到该列表中。您的示例将旧条目覆盖为新条目。@Space\u C0wb0y:我给出的示例说明c是添加到字典中的新值。旧值只是更新值的示例,正如您在第一行中所说,
a['a']=1
。下次更新后,
a['a']=3
。这意味着
'a'
的旧值已被新值覆盖。OP想要的是
a['a']=[1,3]
-1你没有答对他的问题。OP希望值是一个列表,并将新的数字附加到该列表中。您的示例将旧条目覆盖为新条目。@Space\u C0wb0y:我给出的示例说明c是添加到字典中的新值。旧值只是更新值的示例,正如您在第一行中所说,
a['a']=1
。下次更新后,
a['a']=3
。这意味着
'a'
的旧值已被新值覆盖。OP想要的是
a['a']=[1,3]