在python中更新多值字典

时间:2014-11-12 08:39:06

标签: python dictionary tuples immutability multivalue

我正在尝试更新二维字典中的特定值,其中每组键都包含多个值。我的脚本有点像这样:

#!/usr/bin/python
mylist=['a', 2, 3, 4]
mydic = {}
mydic[mylist[0]] = mydic.get(mylist[0], {})
mydic[mylist[0]][mylist[1]] = mylist[2], mylist[3]
print mydic[mylist[0]][mylist[1]][0]
  
    
      

3

    
  
mydic[mylist[0]][mylist[1]][0] += 1
  
    
      

TypeError:' tuple'对象不支持项目分配

    
  

这里出了什么问题,我应该如何更新多值字典中的特定值?我的实际键值列表比这个例子长得多,所以更新整个键并不是一个真正的选择......

1 个答案:

答案 0 :(得分:3)

您收到错误是因为您正在尝试修改元组:

>>> a=(2,4)
>>> a[0]+=1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

正如jonrsharpe的评论所建议的,如果你想只能修改一些值,请使用列表而不是元组:

>>> mydic[mylist[0]][mylist[1]] = [mylist[2], mylist[3]]
>>> print mydic[mylist[0]][mylist[1]]
[3, 4]
>>> mydic[mylist[0]][mylist[1]][0] += 1
>>> print mydic[mylist[0]][mylist[1]]
[4, 4]