2016-09-28 339 views
-7

我有列表这样的(他们是尺寸值):Python从列表中删除重复项?

val = [6'6 X 9'8, 6'6" X 9'8"] 

我现在用的是一套功能来删除重复项:

val = set(val) 

输出:

{6'6 X 9'8, 6'6" X 9'8"} 

我想如果两个值相同(数字应该相等),则输出中的任何值:

either 6'6 X 9'8 or 6'6" X 9'8" 


Separate values are like this ` 6'6 X 9'8` and 6'6" X 9'8" 

如果值完全不同,我想删除重复项。在我的情况下:数值实际上是相同的,但单位是不同的(参见6号单位,第一个数值6没有标记,但第二个数值6的标记为")。但是,考虑到两个值不同,设置函数。

如果只有数字相同,有什么办法可以检查重复吗?

+0

这不是一个语法上有效的列表。请张贴我可以粘贴到我的口译员的清单。 – timgeb

+0

当你定义它时,Python甚至不会识别“list”。此外列表是内置在Python中 - 使用另一个名称为您的列表! – coder

+0

没关系,但你会保留哪一个?与报价或双引号? –

回答

1

由于您的引号没有正确关闭,因此无法按预期工作。

如果你改变你的列表中的元素要像字符串:

l = ["6'6 X 9'8", "6'6 X 9'8"] 

代替:

l = [6'6 X 9'8, 6'6" X 9'8"] 

然后说:

print set(l) 

,你会得到输出你的预期。

P.S .:不要使用'list'作为变量名,因为它是一种内置方法。

+0

谢谢。所以首先我需要将我的列表中的值转换为字符串?实际上,我正在使用lambda的apply函数来应用这个设置函数,因为这个列表在我的数据框列中作为行存在。像这样:'df ['col'] = df ['col']。apply(lambda x:set(x))' – niranjan

+0

在这种情况下它们需要是字符串,因为你有一个字母字符“X”。确保打开并关闭每个元素周围的所有引号,否则会出现语法错误。 –

+0

确定在通过我的列表设置功能之前,我需要将列表中的每个值转换为正确的字符串? – niranjan