У меня есть следующий образец списка списков (показан только раздел):
[
["4YBB|1|AA|A|262", "4YBB|1|AA|A|263", "s35"],
["4YBB|1|AA|U|261", "4YBB|1|AA|A|263", "tSH",],
["4YBB|1|AA|U|261", "4YBB|1|AA|C|264", "ntSH", "s55"],
["4YBB|1|AA|G|259", "4YBB|1|AA|C|267", "cWW"],
["4WOI|1|DA|A|262", "4WOI|1|DA|A|263", "s35", "cWW"],
["4WOI|1|DA|C|264", "4WOI|1|DA|G|265", "s35"]
....
]
Я хотел бы сгруппировать элементы в этом списке во вложенный словарь на основе следующего списка ключей:
outer_key = ["4YBB|1|AA", "4WOI|1|DA"]
inner_key = [(259, 267), (259, 260), (260, 261), (260, 265), (260, 267), (261, 263), (261, 264), (262, 263), (264, 265), (265, 267)]
Как вы можете заметить, внешний ключ представляет собой подмножество элементов с индексом [0] и индексом [1] внутреннего списка, тогда как значения кортежа внутреннего ключа представляют последний элемент индекса [0] и индекса [1] списка. внутренний список при разделении с помощью '|' персонаж. Внутренние ключевые кортежи представляют все возможные комбинации позиций (x, y), которые могут иметь «взаимодействие» (индекс [2] и далее внутреннего списка). Таким образом, не все ключи будут иметь значение, связанное с ним. Если конкретный внутренний ключ кортежа отсутствует, добавьте «-» к его значению.
pw_info = {
"4YBB|1|AA" : {
(259, 267): "cWW",
(259, 260): "-",
(260, 261): "-",
(260, 265): "-",
(260, 267): "-",
(261, 263): "tSH",
(261, 264): "ntSH;s55",
(262, 263): "s35",
(264, 265): "-",
(265, 267): "s35"
},
"4WOI|1|DA" : {
(259, 267): "-",
(259, 260): "-",
(260, 261): "-",
(260, 265): "-",
(260, 267): "-",
(261, 263): "-",
(261, 264): "-",
(262, 263): "s35;cWW",
(264, 265): "s35",
(265, 267): "-"
}
}
Ключи должны быть заказаны в соответствии с внешним и внутренним списками ключей. Кроме того, внутренний список может содержать более 3 элементов. Если элементов более 3, соедините элементы с индексом [2] и выше вместе, используя ";" как значение внутреннего словаря (например: (261, 264): "ntSH;s55" ). Как лучше всего это сделать?