我有一個元組串列:
lst = [
("Tom", "Failed"),
("Tom", "Success"),
("Kas", "Success"),
("Kas", "Success"),
("Al", "Warning"),
("Al", "Success",
("Pel", "Failed"),
("Pel", "Failed")
]
我不想重復,所以我使用 set():
set_lst = set(lst)
我得到:
{
('Al', 'Success'),
('Al', 'Warning'),
('Kas', 'Success'),
('Tom', 'Failed'),
('Tom', 'Success'),
('Pel', 'Failed')
}
我完全搞砸了條件并放棄了:
for x, y in set_lst:
if len({g for _, g in set_lst}) > 1:
y = "Success"
print(x, y)
elif len({g for _, g in set_lst}) <= 1:
if y == "Failed":
print(x, y)
我不知道我應該如何在實際代碼中進行處理。
我將警告和成功(如果是同一個人)視為成功;失敗和成功(如果是同一個人)也作為成功;失敗為失敗。
如果我有:
('Tom', 'Failed') 和 ('Tom', 'Success') -> 湯姆成功
('Al', 'Success') 和 ('Al', 'Warning') -> Al 成功
我除了:
Al Success
Kas Success
Tom Success
Pel Failed
元組串列可能會改變。
uj5u.com熱心網友回復:
嘗試:
lst = [
("Tom", "Failed"),
("Tom", "Success"),
("Kas", "Success"),
("Kas", "Success"),
("Al", "Warning"),
("Al", "Success"),
("Pel", "Failed"),
("Pel", "Failed"),
]
out = {}
for name, status in lst:
if name not in out or out[name] != "Success":
out[name] = status
out = list(out.items())
print(out)
印刷:
[('Tom', 'Success'), ('Kas', 'Success'), ('Al', 'Success'), ('Pel', 'Failed')]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/456865.html
標籤:python-3.x 列表 for循环 if 语句 元组
