Предположим, у нас есть список словарей:
[{0: [0, 1, 2, 3], 1: [4]}, {2: [5, 6, 7, 8], 3: [9]}, {4: [10, 11, 12]}]
, и мы хотим разбить словари в этом списке в соответствии с некоторым набором, например (0, 5, 10)
, таким образом, чтобы для каждого ihзначение в кортеже, если это значение присутствует в любом внутреннем подсписке i-го словаря, оно разделяется на свой собственный список.Кроме того, словари непрерывно перенумеровываются с 0. Таким образом, результат вышеупомянутого будет.
[{0:[0], 1: [1, 2, 3], 2: [4]}, {3:[5], 4: [6, 7, 8], 5: [9]}, {6:[10], 7: [11, 12]}]
, поскольку 0
является частью первого словаря, он получитТрещина.Поскольку 5
является частью второго словаря, он будет разделен.Точно так же, поскольку 10
является третьим значением в кортеже и является частью третьего словаря, оно будет разделено.
Я написал следующий код:
for i in range(0, len(newlist)):
for key, value in newlist[i].items():
if x[i] in value:
value.remove(x[i])
newlist[i][key].append(x[i])
Это дает [{0: [1, 2, 3, 0], 1: [4, 0]}, {2: [6, 7, 8, 5], 3: [9, 5]}, {4: [11, 12, 10]}]
, который не является желаемым выводом, он добавляет к каждому списку для ключа.
Как добавить просто один список, как в желаемом выводе, и как изменить нумерацию списков по своему усмотрению, используя понимание списка или иным образом?