def multiassign(d, keys, values):
for k, v in zip(keys, values):
d[k] = v
或者您甚至可以编写一个dict子类,该子类为您提供所需的语法:
class EasyDict(dict):
def __getitem__(self, key):
if isinstance(key, tuple):
return [super().__getitem__(k) for k in key]
else:
return super().__getitem__(key)
def __setitem__(self, key, value):
if isinstance(key, tuple):
self.update(zip(key, value))
else:
super().__setitem__(key, value)
def __delitem__(self, key, value):
if isinstance(key, tuple):
for k in key: super().__delitem__(k)
else:
super().__setitem__(key, value)
您也可以简单地使用multiple assigment semantics:
您可以使用dict.update:
这将覆盖现有键的值,并为不存在的键添加新的键-值对。
您始终可以将其包装在函数中:
即使你不知道
update
,你也可以这样写:或者您甚至可以编写一个
dict
子类,该子类为您提供所需的语法:现在:
请注意,显然不再可能将元组用作
EasyDict
中的键。另外,如果要将此用于严重的问题,您可能需要改进错误处理。(
d['a', 'b'] = 1
将给出一个关于zip argument #2 must support iteration
的秘密消息,d['a', 'b', 'c'] = 1, 2
将静默工作,对c
等不做任何事情。)相关问题 更多 >
编程相关推荐