通过函数添加字典索引

时间:2011-02-19 20:44:58

标签: python

我一直在尝试使用for循环在字典中添加新索引 我希望每次输入值时都使用for循环添加索引,通过函数输入'index'。

所以字典就会不断增长。

例如:

我的字典将它的值作为列表,并且要为该列表添加值,我可以使用     字典[指数] .append(值)

在一个功能中:

dicc = {'index':[]}

def addStuff(i = '', v = ''):    
    for i in dicc:
        dicc[i].append(v) #adds values to the list
    return

但是我没有添加索引

我一直在努力,但似乎还没有想到。 所以我想知道通过函数保持字典索引增长的方法。 也许并且可能它很容易做到,但是现在我有点被阻止了,是的,我一直在努力,...这就是我来到这里的原因。 提前致谢。 :)

3 个答案:

答案 0 :(得分:1)

首先,正如德尔南注意到的那样,你的addStuff函数似乎有些困惑。我猜你希望它将一个项v添加到字典中的列表i。但是,您的函数实际执行的操作是将项v添加到字典中的每个列表,而不管它具有什么键。您传递给函数的值i将被完全忽略,因为它会立即被循环变量覆盖。

假设dicc包含{'index': [1, 8], 'someOtherIndex': [4, 11]}。如果我们打电话给addStuff('index', 23),或addStuff('someOtherIndex', 23),甚至是 addStuff('supercalifragilisticexpialidocious', 23),在所有三种情况下,我们最终都会dicc包含{'index': [1, 8, 23], 'someOtherIndex': [4, 11, 23]}

我不确定你为什么不写这样的addStuff函数:

def addStuff(i = '', v = ''):    
    dicc[i].append(v)

我猜你的下一个问题是,如果i的值不是字典中的键,则此方法不起作用。在这种情况下,您希望该函数自动为该键创建一个空列表:

def addStuff(i = '', v = ''):    
    if i not in dicc:
        dicc[i] = []
    dicc[i].append(v)

答案 1 :(得分:0)

使用.iteritems(),. iterkeys和.itervalues()函数。

for key in dicc.iterkeys():
    print key # A key

for key in dicc.itervalues():
    key.append(5) # appends 5 to the value

for (key, value) in dicc.iteritems():
    pass # I have both the key and the value

答案 2 :(得分:0)

dicc = {'a':[1]}

def addStuff(keys, vals):
    for key,val in zip(keys,vals):
        if key not in dicc:
            dicc[key] = [val]
        else:
            dicc[key].append(val) #adds values to the list

addStuff('a', '2')
addStuff(['b', 'a'], ['3', 'blah'])
print dicc
# {'a': [1, '2', 'blah'], 'b': ['3']}