嘿伙计们,我找到了一些很难理解的东西..
我的代码是
dicts = {'sadasd':'dfsdf','dsfdsf':'sdfsdf'}
for i in enumerate(dicts):
dicts[i] = dicts[i]+1
print dicts[i]
当我执行它时,我没有得到任何输出。
但我知道而不是dicts[i] = dicts[i]+1
i = i+1
可以正常工作..
你能告诉我为什么dicts [i] = dicts [i] +1不可能。这是因为列表是不可变的吗?
任何帮助都将不胜感激。谢谢..
答案 0 :(得分:3)
使用Python 2,您将获得KeyError
,因为enumerate(dicts)
的元素是:
(0, 'dsfdsf')
(1, 'sadasd')
是元组。当您尝试访问字典dicts
:
dicts[i] = dicts[i] + 1
在每次迭代中它将是:
dicts[(0, 'dsfdsf')] = dicts[(0, 'dsfdsf')] + 1
dicts[(0, 'sadasd')] = dicts[(0, 'sadasd')] + 1
请注意,(0, 'dsfdsf')
不是dicts
中的关键字,因此您将获得KeyError
。请记住,访问字典的方式是:
some_dict[some_key] # this will give the value
答案 1 :(得分:0)
我不知道你想做什么。但一般来说:
您可以直接迭代它们:
for i in dicts:
print i, dicts[i]
为您提供字典的关键和价值。
您可以迭代一个数组,如:
array = ['a','b','b']
for key, value in enumerate(array):
print key,value
# now array[key] == value
如果您希望将一个整数附加到字符串,则必须将其显式转换为str(42)
。
答案 2 :(得分:0)
dictionnary是按键访问的,而不是通过索引访问的。尝试
print dicts[0]
,您将收到KeyError异常
我不是一个索引,而是一个元组:(index, key)
,例如(0, 'dsfdsf')
。
你想用+ 1做什么?
拥有有效dicts[i] = dicts[i] + 1
行的唯一方法是
我是一个关键,但变量名称具有误导性
使用整数添加整数到关键i中存储的值。
例如
dicts = {'bob': 27, 'Alice': 28}
# i is a key, not an index !
for i in dicts.keys():
dicts[i] = dicts[i] + 1
print dicts
输出:
{'bob': 28, 'Alice': 29}
答案 3 :(得分:0)
完全可以增加字典中的值,只要:
试试这个:
data = {'sadasd':1,'dsfdsf':2}
for k in data:
data[k] = data[k]+1
print data