通过函数添加字典索引

1 投票
3 回答
2523 浏览
提问于 2025-04-16 12:08

我一直在尝试如何通过一个循环在字典里添加新的索引。
我想每次输入一个值和对应的'索引'时,都能通过一个函数不断添加索引。

这样字典就会不断增长。

举个例子:

我的字典里的值是列表,如果我想往这个列表里添加值,可以用 dictionary[index].append(value)

在一个函数里:

dicc = {'index':[]}

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

但我想不到怎么添加索引。

我一直在尝试,但似乎就是想不起来。
所以我想知道有什么方法可以通过一个函数让字典的索引不断增加。
也许这其实很简单,但现在我有点卡住了,确实我一直在尝试……这就是我来这里的原因。
提前谢谢大家。
:)

3 个回答

0

在编程中,我们常常会遇到一些问题,特别是在使用某些工具或库的时候。有时候,文档可能写得不够清楚,导致我们在使用时感到困惑。这种情况下,向社区求助,比如在StackOverflow上提问,是一个不错的选择。

在提问时,记得描述清楚你遇到的问题,包括你使用的工具、代码示例,以及你尝试过的解决方法。这样,其他人才能更好地理解你的问题,并给出有效的建议。

同时,查看别人提出的问题和答案也是一个很好的学习方式。你可能会发现,很多人遇到的困难和你是一样的,解决方案也能帮助你更好地理解相关的知识。

总之,编程是一条不断学习的路,遇到问题时不要害怕寻求帮助,积极参与社区讨论,能让你进步得更快。

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']}
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
1

首先,正如delnan所注意到的,你在你的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)

撰写回答