添加到设置拆分字符串的元素



我以字符串形式接收值,用逗号分隔。 例:

alpha, gane, delta
delta, opsirom, nado     

我想获取一个列表/一组唯一值,排序。我正在尝试使用唯一身份的集合:

app = set()
for r in result:
app = app | set(r.split[","])

但我收到以下错误:

TypeError: 'builtin_function_or_method' object is not subscriptable

如果我正确理解您的输入并set您所说的唯一性,我会在splitreplace之间混合使用:

value_1 = "alpha, gane, delta, alpha"
aux_1 = value_1.replace(" ","").split(",")
a = list(set(aux_1))
print(a)
#Another list formatted as string arrives:
value_2 = "alpha, beta, omega, beta"
aux_2 = value_2.replace(" ","").split(",")
#Option 1:
a += list(set(aux_2))
a = list(set(a))
print(a)
#Option 2:
for i in aux_2:
if i in a:
pass
else:
a.append(i)
print(a)

两种情况的输出:

['delta', 'gane', 'omega', 'beta', 'alpha']

收到另一个字符串后,您可以将值添加到完整列表中,在这种情况下a并再次使用set()来消除进一步的重复项。或者检查每个单独的值,如果字符串中的值in完整列表中,如果不是,则追加它,或者如果它已存在于完整列表中,则跳过。

以及您可以使用以下代码,

splited_inputs = inputs.split(',')
unique_values = list(dict.fromkeys(splited_inputs))

试试这个:

s = "alpha, gane, delta, delta, opsirom, nado"   
unique_values = list(set(s.rsplit(', ')))
print(unique_values)

输出:

['opsirom', 'delta', 'alpha', 'gane', 'nado']

你离得不远了。 直接的问题是使用[]而不是()进行split函数调用。

In [151]: alist = """alpha, gane, delta 
...: delta, opsirom, nado""".splitlines()                                                   
In [152]: alist                                                                                  
Out[152]: ['alpha, gane, delta', 'delta, opsirom, nado']
In [153]: aset = set()                                                                           
In [154]: for astr in alist: 
...:     aset |= set(astr.split(', ')) 
...:                                                                                        
In [155]: aset                                                                                   
Out[155]: {'alpha', 'delta', 'gane', 'nado', 'opsirom'}

使用|连接集很好;我使用了=版本。 需要调整拆分分隔符以避免结果中同时出现"delta"和"delta"。 否则,您可能需要将strip应用于每个字符串。@Victor把这部分做对了。

最新更新