В следующем примере я создал класс Sample
, который принимает словарь аргументов ключевых слов, например:
import numpy as np
class Sample:
def __init__(self, **kwargs):
self.A = kwargs['A']
self.B = kwargs['B']
self.C = kwargs['C']
self.D = kwargs['D']
self.E = kwargs['E']
self.F = kwargs['F']
self.G = kwargs['G']
, и функцию для создания списка объектов класса, таких как:
def createSampleList (As, Bs, Cs, **kwargs):
sampleList = []
for A in As:
for B in Bs:
for C in Cs:
addedkwargs = {'A': A, 'B': B, 'C': C}
kwargs = dict(kwargs,**addedkwargs)
sampleList.append (Sample (**kwargs))
return sampleList
Пока эта функция работает нормально, если я дам ей список позиционных аргументов, как в определении, так что
As = np.linspace (0, 3, 3)
Bs = np.linspace (0, 3, 4)
Cs = np.linspace (0, 3, 6)
D = 3
E = 5
F = 8
G = 9
sampleList = createSampleList (
As, Bs, Cs, **{
'D' : D,
'E' : E,
'F' : F,
'G' : G,
})
работает как положено. Для instace:
print(len(sampleList))
>>> 72
Теперь я хотел бы иметь возможность вызывать функцию createSampleList
со словарем переменной длины аргументов ключевых слов. Скажите:
sampleList = createSampleList2 (
{'A': As, 'B': Bs, 'C': Cs, 'D' : D }, **{
'E' : E,
'F' : F,
'G' : G,
})
Я пробовал что-то вроде
def createSampleList2 (arrayDict, **kwargs):
sampleList = []
addedkwargs = dict()
for key in arrayDict.keys():
for value in arrayDict[key]:
addedkwargs[key]= value
kwargs = dict(kwargs,**addedkwargs)
sampleList.append (Sample (**kwargs))
return sampleList
, но, конечно, это не работает. Есть предложения?