如何将2元素列表作为键/值对添加到python字典中?
我想将2元素列表的内容添加到python字典(python3)中。第一个元素是键,第二个元素是值 我跟着,但可能我误解了内容 这就是我要做的如何将2元素列表作为键/值对添加到python字典中?,python,python-3.x,Python,Python 3.x,我想将2元素列表的内容添加到python字典(python3)中。第一个元素是键,第二个元素是值 我跟着,但可能我误解了内容 这就是我要做的 mydict = {"test": "1"} key_value_pair = ["test2", "42"] mydict.update(key_value_pair) 预期结果是有一个包含两个条目的dict: { "test": "1
mydict = {"test": "1"}
key_value_pair = ["test2", "42"]
mydict.update(key_value_pair)
预期结果是有一个包含两个条目的dict:
{
"test": "1",
"test2" : "42"
}
但是我得到了一个错误ValueError:dictionary update sequence元素#0的长度为5;2是必需的
当然,我可以这样做:
mydict[key_value_pair[0]] = key_value_pair[1]
但其思想是拆分一个字符串,并将这两个元素直接用作键/值对:
mystring = "test2=42"
mydict.update(mystring.split("="))
而不是
mystring = "test4=42"
splitted_string = mystring.split("=")
mydict[splitted_string[0]] = splitted_string[1]
我希望你能从以下几点中看到重点…:
使用其他键/值对更新字典,覆盖现有键。返回无。update()
接受另一个dictionary对象或键/值对的iterable(作为元组或长度为2的其他iterable)。如果指定了关键字参数,则使用这些键/值对更新字典:d.update(红色=1,蓝色=2)
因此,当您提供一个iterable
时,它希望iterable的每个元素都是键值对
这就是为什么这样做的原因:
kvp = ["newkey", "newval"]
mydict.update([kvp])
输入iterable的每个元素都是一个2元素列表
当你这么做的时候
mydict.update(kvp)
update()
尝试确保kvp
的每个元素都是两个元素的iterable。由于字符串是可编辑的,因此会出现元素长度无效的错误
旁注:如果
kvp
包含整数或不可计算的内容:
kvp2 = [0, 42]
mydict.update(kvp2)
你会得到这个错误
TypeError:无法将字典更新序列元素#0转换为序列
因此,要使用
split()
操作的结果更新dict,只需将该列表包装到另一个iterable中(以下示例中的列表)
如果你想让iterable成为一个元组,这里有一个小问题。只需将mystring.split()
括在括号中:(mystring.split(“=”)
不会创建元组。相反,您需要添加逗号(mystring.split(“=”)
,以创建元组
t1 = (mystring.split("="))
print(type(t1))
# Output: list
t2 = (mystring.split("="), )
print(type(t2))
# Output: tuple
mydict.update((mystring.split("="), ))
如果您有一个在键和值之间交替的N
字符串列表,那么将其重塑为一个N/2x2
键-值对列表是相当容易的:
mydict = {"test": "1"}
all_kvp = ["key1", "val1", "key2", "val2", "key3", "val3"]
kvp = [(k, v) for k, v in zip(all_kvp[::2], all_kvp[1::2])] # creates a list-of-tuples, but a list-of-lists would also work.
mydict.update(kvp)
# mydict: {'test': '1', 'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}
从:
使用其他键/值对更新字典,覆盖现有键。返回无。update()
接受另一个dictionary对象或键/值对的iterable(作为元组或长度为2的其他iterable)。如果指定了关键字参数,则使用这些键/值对更新字典:d.update(红色=1,蓝色=2)
因此,当您提供一个iterable
时,它希望iterable的每个元素都是键值对
这就是为什么这样做的原因:
kvp = ["newkey", "newval"]
mydict.update([kvp])
输入iterable的每个元素都是一个2元素列表
当你这么做的时候
mydict.update(kvp)
update()
尝试确保kvp
的每个元素都是两个元素的iterable。由于字符串是可编辑的,因此会出现元素长度无效的错误
旁注:如果
kvp
包含整数或不可计算的内容:
kvp2 = [0, 42]
mydict.update(kvp2)
你会得到这个错误
TypeError:无法将字典更新序列元素#0转换为序列
因此,要使用
split()
操作的结果更新dict,只需将该列表包装到另一个iterable中(以下示例中的列表)
如果你想让iterable成为一个元组,这里有一个小问题。只需将mystring.split()
括在括号中:(mystring.split(“=”)
不会创建元组。相反,您需要添加逗号(mystring.split(“=”)
,以创建元组
t1 = (mystring.split("="))
print(type(t1))
# Output: list
t2 = (mystring.split("="), )
print(type(t2))
# Output: tuple
mydict.update((mystring.split("="), ))
如果您有一个在键和值之间交替的N
字符串列表,那么将其重塑为一个N/2x2
键-值对列表是相当容易的:
mydict = {"test": "1"}
all_kvp = ["key1", "val1", "key2", "val2", "key3", "val3"]
kvp = [(k, v) for k, v in zip(all_kvp[::2], all_kvp[1::2])] # creates a list-of-tuples, but a list-of-lists would also work.
mydict.update(kvp)
# mydict: {'test': '1', 'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}
发件人:
update()
接受另一个dictionary对象或键/值对的iterable(作为元组或长度为2的其他iterable)
对于您的代码,出现了一个异常,因为“test2”
是一个iterable,但长度为5而不是2
例如,您可以将您的2个列表包装到另一个列表中以使其工作:
mydict={“测试”:“1”}
... 键值对=[“test2”,“42”]
... mydict.update([key\u value\u pair])
>>>麦迪克特
{'test':'1','test2':'42'}
来自:
update()
接受另一个dictionary对象或键/值对的iterable(作为元组或长度为2的其他iterable)
对于您的代码,出现了一个异常,因为“test2”
是一个iterable,但长度为5而不是2
例如,您可以将您的2个列表包装到另一个列表中以使其工作:
mydict={“测试”:“1”}
... 键值对=[“test2”,“42”]
... mydict.update([key\u value\u pair])
>>>麦迪克特
{'test':'1','test2':'42'}
但其思想是拆分一个字符串,并将这两个元素直接用作键/值对:
mystring = "test2=42"
mydict.update(mystring.split("="))
如果要拆分字符串并将这两个元素直接用作键/值对,那么我认为这是最简单的方法:
mydict = {"test": "1"}
mydict.update(["test2=42".split("=")]) # this statement
print(mydict)
这将按预期打印:
{'test':'1','test2':'42'}
但其思想是拆分一个字符串,并将这两个元素直接用作键/值对:
mystring = "test2=42"
mydict.update(mystring.split("="))
如果要拆分字符串并将这两个元素直接用作键/值对,那么我认为这是最简单的方法:
mydict = {"test": "1"}
mydict.update(["test2=42".split("=")]) # this statement
print(mydict)
这将按预期打印:
{'test':'1','test2':'42'}
mydict.update([“test2”,“42”],)
。请注意出现了,
。是的,我看到了,
是“键”。。。非常好,谢谢mydict.update(([“test2”,“42”],)
。请注意