You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何清理重复位置列表项并生成完整位置值列表?

解决方案

需求1:保留重复位置的最后一个子列表

利用字典键的唯一性,遍历原列表时用位置元组作为键,后续重复的位置会自动覆盖之前的条目,最后提取字典的值即可得到去重后的列表:

tileNUMS = ['4', '2', '4', '4', '2', '3', '4', '2', '2', '4', '1', '2', '2', '4', '3', '2', '2', '4', '3', '2', '4', '4', '3', '4', '4', '4', '4', '4']
TileList = [tileNUMS[i:i+4] for i in range(0, len(tileNUMS), 4)]

# 去重逻辑
unique_tiles = {}
for tile in TileList:
    # 中间两个元素为位置,转成元组作为字典键(列表不可哈希,元组可以)
    position = (tile[1], tile[2])
    unique_tiles[position] = tile

# 需求1的结果
result1 = list(unique_tiles.values())
print(result1)

执行后输出:

[['4', '2', '4', '4'], ['2', '3', '4', '2'], ['2', '4', '1', '2'], ['4', '4', '3', '4'], ['4', '4', '4', '4']]

需求2:生成全位置列表(缺省值设为0)

先从去重后的列表构建位置-值映射,再遍历所有1-4的位置组合,用dict.get()方法自动处理缺省值:

# 构建位置到值的映射(这里取子列表首尾的任意一个值,示例中首尾一致)
pos_value_map = {(tile[1], tile[2]): tile[0] for tile in result1}

# 生成所有1-4的位置组合,组装成目标格式
all_pos_list = [
    [x, y, pos_value_map.get((x, y), 0)]
    for x in ['1', '2', '3', '4']
    for y in ['1', '2', '3', '4']
]

print(all_pos_list)

执行后输出(部分示例):

[['1', '1', 0], ['1', '2', 0], ['1', '3', 0], ['1', '4', 0], ['2', '1', 0], ['2', '2', 0], ['2', '3', 0], ['2', '4', '4'], ..., ['4', '4', '4']]

内容的提问来源于stack exchange,提问作者Kevin Jones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 22:45:37