如果之前有人回答過,我很抱歉,但我根本找不到這個問題的任何答案。
假設我有這個類和物件串列:
def Person:
def __init__(self, name, country, age):
self.name = name
self.country = country
self.age = age
persons = [Person('Tom', 'USA', 20), Person('Matt', 'UK', 19), Person('Matt', 'USA', 20)]
現在我希望用戶通過輸入屬性值的任意組合來搜索一個人,并且我想回傳具有所有這些值的物件。例如,如果用戶輸入:'Matt'、'USA' 并且沒有年齡,我希望程式只回傳來自美國的 Matt 的第三個人,而不是回傳所有三個物件,因為它們都有一些輸入的屬性值組合。
我的實作目前使用帶有 or 運算子的 if 陳述句,該陳述句將回傳所有物件,因為如果一個陳述句為 True,則使用 or 將回傳所有物件,這就是我想要解決的問題。
提前致謝。
uj5u.com熱心網友回復:
您可以對任務使用串列理解。并且 if 條件應該檢查??該值是否為 None else 檢查串列中。
class Person:
def __init__(self, name, country, age):
self.name = name
self.country = country
self.age = age
def __repr__(self):
return "[{},{},{}]".format(name, country, str(age))
persons = [Person('Tom', 'USA', 20), Person('Matt', 'UK', 19), Person('Matt', 'USA', 20)]
name = "Matt"
country = "USA"
age = None
result = [
p for p in persons
if (name == None or p.name == name) and
(country == None or p.country == country) and
(age == None or p.age == age)
]
print(result) #[[Matt,USA,None]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/367814.html
