我正在嘗試撰寫一個函式,該函式將根據給定引數回傳全域字串變數的特定元素。在這種情況下,我希望它回傳虛構人物的憑據。解決方案不應該改變變數中的任何內容。
strvariable = '''\
Fictional Association
leader: Marisa
cashier: John
IT-consultant: Jenny
parking-manager: Marisa
programmer: Jenny
gardening-consultant: Marisa
fire-chief: Marisa
'''
def credentials(person):
print(strvariable.split(':')) # this is clearly incorrect and returns the whole string without ':'
相反,我希望結果如下所示:
>>> credentials('Marisa')
['leader', 'parking-manager', 'gardening-consultant', 'fire-chief']
uj5u.com熱心網友回復:
...看看下面:
- 由換行符 '\n' 分割
- 進行串列理解以存盤結果
- 過濾僅包含 ':' 的行
- 將理解中的每個專案按“:”拆分
- 僅存盤拆分的第一個元素
- 添加額外的過濾器以僅捕獲您想要的人
s = '''\
Fictional Association
leader: Marisa
cashier: John
IT-consultant: Jenny
parking-manager: Marisa
programmer: Jenny
gardening-consultant: Marisa
fire-chief: Marisa
'''
s.split('\n')
[x for x in s.split('\n')]
[x for x in s.split('\n') if ':' in x]
[x.split(':') for x in s.split('\n') if ':' in x]
[x.split(':')[0] for x in s.split('\n') if ':' in x]
[x.split(':')[0] for x in s.split('\n') if ':' in x if 'Marisa' in x]
# putting all that logic together
def get_cred_for_person(who):
return [x.split(':')[0] for x in s.split('\n') if ':' in x if who in x]
print('Marisa is a:', get_cred_for_person('Marisa'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/341410.html
