python排货规则算法,相同单号,不同库龄,优先进库的,按库龄大的优先出库,然后出库龄第二大的
时间: 2023-09-14 17:16:00 浏览: 105
可以使用Python中的排序算法来实现这个排货规则。具体步骤如下:
1. 将所有货物按照单号进行分组,得到每个单号对应的货物列表。
2. 对于每个单号的货物列表,按照库龄从大到小进行排序。
3. 排序后的货物列表,按照顺序进行出库,即先出库龄大的货物,再出库龄第二大的货物,以此类推。
下面是示例代码实现:
```python
# 定义货物类
class Cargo:
def __init__(self, id, age):
self.id = id # 货物单号
self.age = age # 库龄
# 模拟货物数据
cargos = [
Cargo('A001', 10),
Cargo('A001', 5),
Cargo('A001', 8),
Cargo('A002', 15),
Cargo('A002', 12),
Cargo('A003', 20),
Cargo('A003', 18)
]
# 按单号分组
cargo_dict = {}
for cargo in cargos:
if cargo.id in cargo_dict:
cargo_dict[cargo.id].append(cargo)
else:
cargo_dict[cargo.id] = [cargo]
# 对每个单号的货物按库龄从大到小排序
for id, cargo_list in cargo_dict.items():
cargo_list.sort(key=lambda x: x.age, reverse=True)
# 按排序后的顺序出库
for id, cargo_list in cargo_dict.items():
for cargo in cargo_list:
print(f'出库货物:{cargo.id}, 库龄:{cargo.age}')
```
输出结果为:
```
出库货物:A001, 库龄:10
出库货物:A001, 库龄:8
出库货物:A001, 库龄:5
出库货物:A002, 库龄:15
出库货物:A002, 库龄:12
出库货物:A003, 库龄:20
出库货物:A003, 库龄:18
```
可以看到,按照上述算法,先出库龄大的货物,再出库龄第二大的货物,以此类推。
阅读全文