當字符串列表中存在字符串的一部分時,我試圖能夠返回一個布爾值,例如這里有一個數據集:"issues": [ { "id": "1", "fields": { "labels": [ "customer:asdf", "hello" ] } }, { "id": "2", "fields": { "labels": [ "icanthearyou", "hellotoyou" ] } }, "id": "3", "fields": { "labels": [ "customer:num2", "hellotoyou" ] } }]我目前正在從這個集合中抓取數據,如下所示:def grab_data(self, data): created_values = list((item['id'], # key True if "customer:" is in item['fields']['labels'] else false #fromcustomer boolean ) for item in data['issues'])但顯然以上一行True if "customer:" is in item['fields']['labels'] else false僅在標簽之一僅為“客戶:”時才有效所以要清楚我將如何以上面的格式獲取數據list((item['labels']) for item in data['issues']以查看其中一個labels在任何條目中具有此字符串“customer:”并返回true ...id 1 和 3 應該返回 True,id 2 應該返回 False。所以期望值應該是 [True, False, True]
1 回答

猛跑小豬
TA貢獻1858條經驗 獲得超8個贊
我稍微更改了您的原始列表以使其成為有效的 Python 列表變量,但解決此問題的一種方法是將join您的所有標簽合并為一個字符串,然后在該字符串中搜索“客戶:”。
def filter_issues(issues):
return [ "customer:" in ' '.join(d["fields"]["labels"]) for d in issues]
issues = [{"id": "1", "fields": {"labels": ["customer:asdf", "hello"]}},
{"id": "2", "fields": {"labels": ["icanthearyou", "hellotoyou"]}},
{"id": "3", "fields": {"labels": ["customer:num2","hellotoyou"]}} ]
print(filter_issues(issues))
# Prints: [True, False, True]
我在連接中使用空格而不是空字符串的原因是因為否則類似的東西["abccust", "omer:foo"]會通過。
添加回答
舉報
0/150
提交
取消