我一直在尝试使用for循环在字典中添加新索引 我希望每次输入值时都使用for循环添加索引,通过函数输入'index'。
所以字典就会不断增长。
例如:
我的字典将它的值作为列表,并且要为该列表添加值,我可以使用 字典[指数] .append(值)
在一个功能中:
dicc = {'index':[]}
def addStuff(i = '', v = ''):
for i in dicc:
dicc[i].append(v) #adds values to the list
return
但是我没有添加索引
我一直在努力,但似乎还没有想到。 所以我想知道通过函数保持字典索引增长的方法。 也许并且可能它很容易做到,但是现在我有点被阻止了,是的,我一直在努力,...这就是我来到这里的原因。 提前致谢。 :)
答案 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']}