我正在為以下問題在 python 中的實作中苦苦掙扎:
我有兩個串列,看起來類似于下面的串列:
list1 = [("aa",2),("bb",1),("cc",5),("dd",3),("ee",7)]
list2 = [("bb",3),("dd",1),("cc",2)]
關于串列的第一個屬性 - 字串,第二個串列 list2 由第一個串列 list1 中可用的字串的選擇組成。關于串列的第二個屬性 - 整數,值可能會有所不同。
我的問題需要的是python中的一個演算法,它比較兩個串列list1和list2關于“字串屬性”,并從list1中洗掉所有與list2沒有共同字串的條目。
因此,list1 應該只具有與 list2 中相同的字串屬性。
同樣重要的是,“新”list1 從一開始仍然由元組組成,因此 Integer 屬性來自前一個 list1。
因此結果應該是:
list1 = [("aa",2),("cc",5),("dd",3)]
期待任何幫助。提前致謝。
我已經嘗試了幾種方法來轉換成集合,但還沒有得到一些作業。
uj5u.com熱心網友回復:
假設 in 中的字串值list2是唯一的,您可以制作其中的一個set,然后使用串列推導list1生成所需的輸出,檢查字串元素是否包含在集合中:
list1 = [("aa",2),("bb",1),("cc",5),("dd",3),("ee",7)]
list2 = [("bb",3),("dd",1),("cc",2)]
strings = set(t[0] for t in list2)
result = [t for t in list1 if t[0] in strings]
# [('bb', 1), ('cc', 5), ('dd', 3)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/521940.html
上一篇:將x的值增加1
