我以字符串形式接收值,用逗号分隔。 例:
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
您所说的唯一性,我会在split
和replace
之间混合使用:
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
把这部分做对了。