我有一个字符串,它包含(独占)几个子字符串中的一个。我想检查包含哪个子字符串,并获取与之关联的值。这就是为什么我要用字典做这个操作
例如:
string_to_check = 'TEST13-872B-A22E'
substrings = {'TEST': 0, 'WORLD': 1, 'CORONA':2}
在这种情况下,应返回0
背景是我有一个pandas数据帧(df
),其列string_to_check
充满了这些字符串。根据每行中包含的子字符串,我想为dataframe的新列的相应行分配一个值
示例结果:
string_to_check result
'TEST13-872B-A22E' 0
'CORONA1-241-22E' 2
'TEST32-33A-442' 0
'WORLD4-BB2-A343' 1
我想我可以用一些类似于
def check_string(string_to_check):
for stri, val in zip(substrings.keys, substrings.values):
if stri in string_to_check:
return val
结合应用。但是现在我觉得自己把这些碎片拼在一起太愚蠢了
编辑:
好吧,我想我自己解决了这个问题:
def check_string(string_to_check):
for stri, val in zip(substrings.keys(), substrings.values()):
if stri in string_to_check:
return val
df['result'] = df['string_to_check'].apply(check_string)
但我很高兴看到更多关于缩短/更具可读性/更具python风格的方法的建议
只有很少的建议
首先,您可以在代码中用dict类
substrings.items()
的项方法替换zip(substrings.keys(), substrings.values())
然后,如果需要,可以在
apply
方法中使用lambda函数。此lambda函数产生所需的输出请注意,如果
string_to_check
中不存在子字符串,则函数会由于[0]
而引发错误对于第一个问题,使用^{} 迭代从^{} 获得的键、值对,并检查键是否为
in
dict:但是对于您的实际问题,您可以使用^{} 将带有} 与} 连接到^{} ,然后^{} 将结果连接到
|
字符的^{substrings
中的^{substrings
:所有目标字符串都将存储在
strings_to_check
中,如果没有找到字符串的可行输出,则返回值是这些字符串的所有输出的列表-追加1相关问题 更多 >
编程相关推荐