我有一個像這樣的元組串列:
my_list = [('a','Yes'),('a','No'),('b','No'),('b','No'),('c','No'),('c','Yes')]
如果字母 a、b 或 c 中有一個“是”,則保留帶有“是”的元組。否則,只需將元組保留為“否”。
換句話說,我如何獲得以下輸出:
new_list = [('a','Yes'),('b','No'),('c','Yes')]
我累了:
new_list=[]
for i,j in my_list:
if 'Yes' in j:
new_list.append((i,j))
# [('a', 'Yes'), ('c', 'Yes')]
但這僅包括帶有“是”的元組,我不知道如何包含帶有“否”的元組。
謝謝
uj5u.com熱心網友回復:
my_list = [('a','Yes'),('a','No'),('b','No'),('b','No'),('c','No'),('c','Yes')]
new_list = []
for i in my_list:
if (i[0],'No') not in new_list:
new_list = [(i[0],'No')]
for j in my_list:
if i[0] == j[0] and j[1] == 'Yes':
new_list.remove(new_list[-1])
if (i[0],'Yes') not in new_list:
new_list.append((i[0],'Yes'))
輸出 :
[('a', 'Yes'), ('b', 'No'), ('c', 'Yes')]
uj5u.com熱心網友回復:
有一種非常簡潔的方法可以實作這一點:
list(dict(sorted(my_list)).items())
# [('a', 'Yes'), ('b', 'No'), ('c', 'Yes')]
uj5u.com熱心網友回復:
my_list = [('a','Yes'),('a','No'),('b','No'),('b','No'),('c','No'),('c','Yes')]
new_list=[]
for x in range(0,len(my_list)-1):
i = my_list[x][0]
j = my_list[x][1]
m = my_list[x 1][0]
if i == m:
if j == "Yes":
new_list.append(my_list[x])
else:
new_list.append(my_list[x 1])
print(new_list)
這將為您提供所需的輸出:)
uj5u.com熱心網友回復:
您可以將排序串列提供給字典建構式。這將保留每個字母的最后一個是/否。如果至少有一個,則字串 'Yes' 大于 'No' 將導致該字母獲得一個 'Yes' 值。
new_list = [*dict(sorted(my_list)).items()]
print(new_list)
[('a', 'Yes'), ('b', 'No'), ('c', 'Yes')]
您也可以通過僅使用具有“是”的專案覆寫所有專案的字典鍵來完成此操作,而無需進行排序:
new_list = [*dict(my_list [t for t in my_list if t[1]=='Yes']).items()]
如果您必須反復進行,您可以跟蹤您在第一個回圈中添加的字母(在一個集合中),然后第二次通過 my_list 添加丟失的字母(這將是“否”唯一的元組):
new_list = []
seen = set()
for i,j in my_list: # First add the 'Yes' tuples
if j=='Yes' and i not in seen:
new_list.append((i,j))
seen.add(i) # Track the letters added
for i,j in my_list: # Then, add the missing letters ('No')
if j=='No' and i not in seen:
new_list.append((i,j))
seen.add(i) # Track to add only once
uj5u.com熱心網友回復:
我會將回圈重寫為:
my_list = [('a','Yes'),('a','No'),('b','No'),('b','No'),('c','No'),('c','Yes')]
res = {}
for k, v in my_list:
if (k not in res) or (res[k] == "No"):
res[k] = v
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/334322.html
標籤:Python
上一篇:用“#”替換字母并反轉
