高效地查找和替换列表中的字符串 Python

我目前正在从 api 中提取一个列表并根据严重性级别更改名称


现在我执行此操作的代码是


priname = list((item['fields']['priority']['name']) for item in data['issues'])

priname = [w.replace('Trivial', 'Low')

            .replace('Minor', 'Low')

            .replace('Moderate', 'Medium')

            .replace('Major', 'High')

            .replace('Critical', 'High')

            .replace('Blocker', 'Emergency')for w in priname]

所以我只是将列表中的字符串替换为概括内容的关键字。当我对较大的列表执行此操作时,返回更改后的列表需要很长时间,我意识到这意味着这根本不是一种有效的方法。


任何人都可以指出我可以简化此查找和替换的方向吗?


编辑:


Priname=[

'Critical',

'Moderate',

'Major',

'Moderate',

'Moderate', 

'Critical', 

'Moderate', 

'Moderate', 

'Moderate', 

'Blocker', 

'Critical', 

'Moderate', 

'Moderate', 

'Major', 

'Moderate', 

'Critical'

]


繁花不似锦
浏览 196回答 3
3回答

慕容森

你可以使用字典:priname = [    'Critical',    'Moderate',    'Major',    'Moderate',    'Moderate',    'Critical',    'Moderate',    'Moderate',    'Moderate',    'Blocker',    'Critical',    'Moderate',    'Moderate',    'Major',    'Moderate',    'Critical']table = {'Trivial': 'Low',         'Minor': 'Low',         'Moderate': 'Medium',         'Major': 'High',         'Critical': 'High',         'Blocker': 'Emergency'}result = [table[e] for e in priname]print(result)输出['High', 'Medium', 'High', 'Medium', 'Medium', 'High', 'Medium', 'Medium', 'Medium', 'Emergency', 'High', 'Medium', 'Medium', 'High', 'Medium', 'High']

慕码人2483693

您可以使用字典并为每个键分配多个值:replacements = {'Low': ['Trivial','Minor'], 'Medium': ['Moderate'], 'High': ['Major','Critical'], 'Emergency': ['Blocker']}Priname=['Critical','Moderate','Major','Moderate','Moderate', 'Critical', 'Moderate', 'Moderate','Moderate', 'Blocker', 'Critical', 'Moderate', 'Moderate', 'Major', 'Moderate', 'Critical']Priname = [k for i in Priname for k, v in replacements.items() if i in v]返回:['High', 'Medium', 'High', 'Medium', 'Medium', 'High', 'Medium', 'Medium', 'Medium', 'Emergency', 'High', 'Medium', 'Medium', 'High', 'Medium', 'High']

临摹微笑

想到的一个想法是,而不是使用 for 循环,将列表转换为 numpy 数组并使用 numpy.where 函数:    w = numpy.array(w)    ind = numpy.where(w==list_elements_you_are_looking_for)    w[ind] = new_value
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python