通过函数添加字典索引
我一直在尝试如何通过一个循环在字典里添加新的索引。
我想每次输入一个值和对应的'索引'时,都能通过一个函数不断添加索引。
这样字典就会不断增长。
举个例子:
我的字典里的值是列表,如果我想往这个列表里添加值,可以用 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 个回答
在编程中,我们常常会遇到一些问题,特别是在使用某些工具或库的时候。有时候,文档可能写得不够清楚,导致我们在使用时感到困惑。这种情况下,向社区求助,比如在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']}
使用 .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
首先,正如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)