1
私は私が見つけることができない小さな誤解をしたと信じています。基本的には、{key1:[values1]、key2:[values2]}を保持する単純なデータコンテナを設計しています。リストのユーザー辞書
class Cells(object):
def __init__(self, **kwargs):
self.data = {}
def __data_len__(self):
""" Length of data[first key] list. """
_ = 0
for key in self.data.keys():
if self.data[key]:
_ = len(self.data[key])
break
return _
def subtract_lists(self, x, y):
return [item for item in x if item not in y]
def add(self, to_add):
""" Add columns if not exist """
if not set(to_add.keys()).issubset(self.data.keys()): # New key means adding
new_keys = self.subtract_lists(to_add.keys(), \
self.data.keys()) # it to our dict
newdict = dict.fromkeys(new_keys, \
[] * self.__data_len__())
self.data.update(newdict)
[self.data[key].append(to_add.get(key, '')) for key in self.data.keys()]
print('* Updated data is: %s' % self.data)
##############################
# Now, tests... #
##############################
if __name__ == '__main__':
cells = Cells()
cells.add({'one':1, 'two':2, 'three': 3})
所望の出力は次のようであることである。
Updated data is: {'one': [1], 'two': [2], 'three': [3]}
それは出力:
Updated data is: {'one': [1, 2, 3], 'two': [1, 2, 3], 'three': [1, 2, 3]}
すなわち、イライラさせられるすべてのキーにすべての値を加算します。どこかのタイプミス?
ブリリアント。どうもありがとうございました! – pmus