Параллельное программирование было бы довольно легко, если Ваш подход мог бы работать. Но это не делает, айсберг, который снижает тот Титаник, является, например, клиентом Вашего класса, делающего это:
objectRef.MyProperty += 1;
гонка read-modify-write довольно очевидна, существуют худшие. Нет абсолютно ничего, что можно сделать для создания свойства ориентированным на многопотоковое исполнение кроме создания его неизменный. Именно Ваш клиент должен иметь дело с головной болью. Будучи вынужденным делегировать такую ответственность перед программистом, который должен маловероятно разобраться, это - Ахиллесова пята параллельного программирования.
Не так-то просто понять ваш вопрос, тем более, что ваш код потерял форматирование, но вы можете довольно легко создавать новые объекты списка. Следующее назначает новый объект списка переменной recordList:
recordList = list()
Вы также можете использовать
recordList = []
[] и list () в этом случае эквивалентны.
Не используйте del
. Период. Это «продвинутая» штука.
from collections import defaultdict
mappedDictionay= defaultdict( list ) # mappedDictionary is a poor name
sectionGroupName= None
for record in recordCols:
mappedDictionay[record[0]].append( record )
Вы можете использовать list ()
или просто []
, чтобы создать новый список.
However, I think what you are trying to achieve can be solved simply by using grouby
:
from itertools import groupby
mappedIterator = groupby(recordCols, lambda x: x[0])
or
from itertools import groupby
from operator import itemgetter
mappedIterator = groupby(recordCols, itemgetter(0))
if you prefer.
The groupBy
function will return an iterator rather than a dictionary, where each item is of the form (category, sub-iterator-over-items-in-that-category)
.
If you really want to convert it into a dictionary like you have it in your code, you can run the following afterwards:
mappedDictionary = dict(( (x[0], list(x[1])) for x in mappedIterator ))