具有多个条件和值重新分配的列表理解
List comprehension with multiple conditions and value reassignment
我有一个函数,它有几个条件(恰好 5 个)模拟这个语句:
for n, i in enumerate(EPS_List_EPSV):
if i == 'Very Satisfied':
EPS_List_EPSV[n] = 1
elif i == 'Satisfied':
EPS_List_EPSV[n] = 2
elif i == 'Dissatisfied':
EPS_List_EPSV[n] = 3
else:
EPS_List_EPSV[n] = 4
我想知道是否有更 pythonic 的方式来编写这个,因为函数的长度长得荒谬。我了解处理一个变量的列表理解,但是有没有一种方法可以使用列表理解来编写它?写对了就是在躲我
如果我是我会创建一个字典
dictio = {'Very Satisfied' : 1, 'Satisfied': 2, 'Dissatisfied' : 3, 'other' : 4}
那么您的代码应该如下所示:
for n, i in enumerate(EPS_List_EPSV):
EPS_List_EPSV = dictio[i]
编辑:Chris 的回答更准确,因为它不会在 ESP_List_EPSV 包含字典中不存在的单词的情况下引发 KeyError
使用dict
:
d = {
'Very Satisfied': 1,
'Satisfied': 2,
'Dissatisfied': 3
}
EPS_List_EPSV = ['Very Satisfied', 'Something Else', 'Satisfied', 'Something Else', 'Dissatisfied'
for n, i in enumerate(EPS_List_EPSV):
EPS_List_EPSV[n] = d.get(i, 4)
print(EPS_List_EPSV)
[1, 4, 2, 4, 3]
如果给出任何未定义的键,d.get
是 return 4
。
使用字典和列表理解:
corr = {"Very Satisfied":1, "Satisfied":2, "Dissatisfied":3}
EPS_List_EPSV = [corr.get(el, 4) for el in EPS_List_EPSV]
例如:
EPS_List_EPSV = ["Very Satisfied", "Satisfied", "Satisfied", "Dissatisfied", "Other"]
使用上面的代码变成:[1, 2, 2, 3, 4]
我有一个函数,它有几个条件(恰好 5 个)模拟这个语句:
for n, i in enumerate(EPS_List_EPSV):
if i == 'Very Satisfied':
EPS_List_EPSV[n] = 1
elif i == 'Satisfied':
EPS_List_EPSV[n] = 2
elif i == 'Dissatisfied':
EPS_List_EPSV[n] = 3
else:
EPS_List_EPSV[n] = 4
我想知道是否有更 pythonic 的方式来编写这个,因为函数的长度长得荒谬。我了解处理一个变量的列表理解,但是有没有一种方法可以使用列表理解来编写它?写对了就是在躲我
如果我是我会创建一个字典
dictio = {'Very Satisfied' : 1, 'Satisfied': 2, 'Dissatisfied' : 3, 'other' : 4}
那么您的代码应该如下所示:
for n, i in enumerate(EPS_List_EPSV):
EPS_List_EPSV = dictio[i]
编辑:Chris 的回答更准确,因为它不会在 ESP_List_EPSV 包含字典中不存在的单词的情况下引发 KeyError
使用dict
:
d = {
'Very Satisfied': 1,
'Satisfied': 2,
'Dissatisfied': 3
}
EPS_List_EPSV = ['Very Satisfied', 'Something Else', 'Satisfied', 'Something Else', 'Dissatisfied'
for n, i in enumerate(EPS_List_EPSV):
EPS_List_EPSV[n] = d.get(i, 4)
print(EPS_List_EPSV)
[1, 4, 2, 4, 3]
如果给出任何未定义的键,d.get
是 return 4
。
使用字典和列表理解:
corr = {"Very Satisfied":1, "Satisfied":2, "Dissatisfied":3}
EPS_List_EPSV = [corr.get(el, 4) for el in EPS_List_EPSV]
例如:
EPS_List_EPSV = ["Very Satisfied", "Satisfied", "Satisfied", "Dissatisfied", "Other"]
使用上面的代码变成:[1, 2, 2, 3, 4]