解压缩字典列表并将每个字典设置为自己的变量

时间:2015-04-29 03:20:41

标签: python dictionary

所以我创建一个作为参数的类,需要一个或多个字典。然后它会初始化这些词典的列表。我正在定义一个__add__()方法,该方法接受此类的两个对象并返回一个新对象,该对象由第一个对象的字典组成,后跟第二个对象的字典。

class DictList:
    def __init__(self, *d):
        self.dl = []
        for argument in d:
            if type(argument) != dict:
                raise AssertionError(str(argument) + ' is not a dictionary')
            if len(argument) == 0:
                raise AssertionError('Dictionary is empty')
            else:
                self.dl.append(argument)

例如,

d1 = DictList(dict(a=1,b=2), dict(b=12,c=13))  
d2 = DictList(dict(a='one',b='two'), dict(b='twelve',c='thirteen')) 

然后d1 + d2相当于

DictList({'a': 1, 'b': 2}, {'b': 12, 'c': 13}, {'a': 'one', 'b': 'two'}, {'b': 'twelve', 'c': 'thirteen'})

1 个答案:

答案 0 :(得分:3)

要一起添加两个列表,只需使用+运算符。

要从一个dicts列表中创建一个对象而不是一堆单独的dict参数,只需使用*来解压缩列表。

所以:

def __add__(self, other):
    return type(self)(*(self.dl + other.dl))