♻️ Refactor daily_material sort_item

Co-authored-by: omg-xtao <100690902+omg-xtao@users.noreply.github.com>
This commit is contained in:
xris 2023-10-24 22:25:00 +08:00 committed by GitHub
parent a45db101c8
commit 94c0b249cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -57,27 +57,20 @@ def sort_item(items: List["ItemData"]) -> Iterable["ItemData"]:
排序规则持有星级 > 等级 > 命座/精炼) > 未持有星级 > 等级 > 命座/精炼 排序规则持有星级 > 等级 > 命座/精炼) > 未持有星级 > 等级 > 命座/精炼
""" """
return (
ArkoWrapper(items) def key(item: "ItemData"):
.sort(lambda x: x.level or -1, reverse=True) # 有个小小的意外逻辑,不影响排序输出,如果要修改可能需要注意下:
.groupby(lambda x: x.level is None) # 根据持有与未持有进行分组并排序 # constellation 可以为 None 或 0此时都会被判断为 False
.map( # 此时 refinment or constellation or -1 都会返回 -1
lambda x: ( # 但不影响排序结果
ArkoWrapper(x[1]) return (
.sort(lambda y: y.rarity, reverse=True) item.level is not None, # 根据持有与未持有进行分组并排序
.groupby(lambda y: y.rarity) # 根据星级分组并排序 item.rarity, # 根据星级分组并排序
.map( item.refinement or item.constellation or -1, # 根据命座/精炼进行分组并排序
lambda y: ( item.id, # 默认按照物品 ID 进行排序
ArkoWrapper(y[1])
.sort(lambda z: z.refinement or z.constellation or -1, reverse=True)
.groupby(lambda z: z.refinement or z.constellation or -1) # 根据命座/精炼进行分组并排序
.map(lambda i: ArkoWrapper(i[1]).sort(lambda j: j.id))
)
)
)
) )
.flat(3)
) return sorted(items, key=key, reverse=True)
def get_material_serial_name(names: Iterable[str]) -> str: def get_material_serial_name(names: Iterable[str]) -> str: