Python 如何从元组(或2的列表)更新字典

Python 如何从元组(或2的列表)更新字典,python,dictionary,Python,Dictionary,我认为有可能对现有词典进行如下更新: nameValuePair = 'myKey=myValue' d.update(nameValuePair.split('=')) 但是我得到了这个错误: Traceback (most recent call last): File "<pyshell#98>", line 1, in <module> d2.update(item.split('=')) ValueError: dictionary update

我认为有可能对现有词典进行如下更新:

nameValuePair = 'myKey=myValue'
d.update(nameValuePair.split('='))
但是我得到了这个错误:

Traceback (most recent call last):
  File "<pyshell#98>", line 1, in <module>
    d2.update(item.split('='))
ValueError: dictionary update sequence element #0 has length 1; 2 is required
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
d2.更新(item.split('='))
ValueError:字典更新序列元素#0的长度为1;2是必需的

我看了一些关于这个话题的其他问题/答案,这使我认为这是可能的。我一定是遗漏了一些基本信息…

错误消息已经给了您一个提示:您传递的序列中的每个项的长度必须为2,这意味着它必须由一个键和一个值组成

因此,您必须传递一个由2个元组组成的元组(列表,序列,…)(-list,-sequences,…):

或者,您可以:

key, value = nameValuePair.split('=')
d[key] = value

顺便说一下,您可能希望在此处使用
split('=',1)
,以确保
split
始终返回一对,即使右侧包含
=
。很好,感谢您的解释。我根本不理解错误信息!回到这里:有些事我还是不明白。Python文档说:update()接受另一个dictionary对象或键/值对的iterable(作为元组或其他长度为2的iterable)。如果指定了关键字参数。。。此代码有效:
d.update([nameValuePair.split('=')]
,因为它使用的是长度为2的序列,这对我来说是合乎逻辑的。你给出的解决方案也有效,但我不明白为什么。它使用长度为2的元组,第一个元素作为长度为2的序列。元组的第二个元素是什么?你是对的,人们也可以使用列表……我不知道我在想什么ng.无论如何,外部元组的长度不是2,而是1。
(something,)
创建了一个元组。Python足够聪明,可以注意到第二个元素不存在。创建元组需要逗号,因为在
(something)
中,
()
将被解释为分组运算符。只需执行
a=(42,);打印len(a)
并亲自查看:)“无论如何,外部元组不是长度为2,而是长度为1。(某物)创建了一个元组。”我仍然对语义感到困惑,“一个元组”到底是什么意思表示为参数?它是一个包含一个元素的元组。就像一个只有一个元素的列表一样,只是不能在元组中添加或删除元素,它是不可变的。将元组视为不能更改的列表。
key, value = nameValuePair.split('=')
d[key] = value