在python概念中增加事实

时间:2014-04-08 06:26:42

标签: python

嘿伙计们,我找到了一些很难理解的东西..

我的代码是

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不可能。这是因为列表是不可变的吗?

任何帮助都将不胜感激。谢谢..

4 个答案:

答案 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

您不能将int添加到字符串

如果您希望将一个整数附加到字符串,则必须将其显式转换为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