我一直在这个问题上卡住了很长一段时间,只是不能弄清楚。我只是想能够理解我错过了什么,为什么需要它。我需要做的是做一个函数,将每个给定的键/值对添加到字典中。参数key_value_pairs将是一个形式为(key,value)的元组列表。
def add_to_dict(d, key_value_pairs):
newinputs = [] #creates new list
for key, value in key_value_pairs:
d[key] = value #updates element of key with value
if key in key_value_pairs:
newinputs.append((d[key], value)) #adds d[key and value to list
return newinputs
字符串
当d和key_value_pairs有不同的键时,我不知道如何更新“value”变量。
前三种情况可行,但其余的都失败了
>>> d = {}
>>> add_to_dict(d, [])
[]
>>> d
{}
>>> d = {}
>>> add_to_dict(d, [('a', 2])
[]
>>> d
{'a': 2}
>>> d = {'b': 4}
>>> add_to_dict(d, [('a', 2)])
[]
>>> d
{'a':2, 'b':4}
>>> d = {'a': 0}
>>> add_to_dict(d, [('a', 2)])
[('a', 0)]
>>> d
{'a':2}
>>> d = {'a', 0, 'b': 1}
>>> add_to_dict(d, [('a', 2), ('b': 4)])
[('a', 2), ('b': 1)]
>>> d
{'a': 2, 'b': 4}
>>> d = {'a': 0}
>>> add_to_dict(d, [('a', 1), ('a': 2)])
[('a', 0), ('a':1)]
>>> d
{'a': 2}
型
8条答案
按热度按时间bbuxkriu1#
Python内置了这个特性:
字符串
或者假设你不允许使用
dict.update
:型
2vuwiymt2#
在python 3.9中,您可以使用
|=
update operator:字符串
ilmyapht3#
这里有一个更优雅的解决方案,与Eric的第二个片段相比,
字符串
它在Python 2和Python 3中都可以工作。
当然,更新方法
型
但是,要小心使用后者,因为在像这里这样的误用情况下可能会导致问题
型
dm7nw8vv4#
Python 3.9的新版本为字典引入了两个新的运算符:union(|)和就地工会(|=).你可以使用|合并两个字典,而|=将在适当的位置更新字典。让我们考虑2个字典 d1 和 d2
个字符
输出量:
型
用d2更新d1
型
输出量:
型
您可以使用新的密钥权重更新d1,如下所示
型
输出量:
型
tpxzln5u5#
所以如果我理解正确的话,你想返回一个元组列表,其中包含被替换的键的(key,old_value)。
在替换旧值之前,必须保存旧值:
字符串
wydwbb8l6#
python
dict
中的每个键都对应一个值。d
和key_value_pairs
具有不同键的情况不是相同的元素。newinputs
是否应该包含以前在d
中不存在的键/值对?如果是:字符串
newinputs
是否应该包含键/值对,其中键 * 出现在d
中,然后被更改?如果是:型
axr492tv7#
如果我理解正确的话,你只想添加字典中不存在的键。下面是代码:
字符串
对于new key,value pairs list中的每个键,你必须检查该键是否是字典中的新键,然后才能添加它。希望这对你有帮助;)
v64noz0r8#
我认为这篇文章解释得很好:Dictionary Merge and Update Operators in Python 3.9:
这里是摘要:
字典更新操作符
字典x正在被字典y更新
字符串
字典合并操作符:
将它们合并为一个。具有:
型
老办法:
型
新方式:
型