【发布时间】:2019-07-03 15:58:20
【问题描述】:
我有以下列表示例列表(仅显示一个部分):
[
["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" )。最好的方法是什么?
【问题讨论】:
-
一些空的项目,即 (260, 261): "-" 是从哪里来的?我在初始列表中没有看到这些?
-
@dasvootz 一些内部列表具有这些元组值的组合。为了简单起见,我没有展示所有内容。
标签: python list dictionary