从python列表中找到唯一值

时间:2015-10-16 13:11:58

标签: python

如何查找列表列表的唯一项目?

在以下示例中,我只期望2个项目。

@echo off
setlocal enabledelayedexpansion

:: find newest java.exe
<NUL set /P "=Searching for Java executable... "
for /f "delims=" %%I in ('dir /s /b "%PROGRAMFILES(x86)%\java\*java.exe"') do (
    set "jtest=%%I"
    for /f "tokens=2 delims=.=" %%a in (
        'wmic datafile where "name='!jtest:\=\\!'" get CreationDate /format:list ^| find "="'
    ) do (
        set "created_test=%%a"
        set "created_test=!created_test:~0,-4!"
    )
    if not defined created (
        set "javaexe=!jtest!"
        set "created=!created_test!"
    ) else if !created_test! gtr !created! (
        set "javaexe=!jtest!"
        set "created=!created_test!"
    )
)

if not defined javaexe (
    echo Not found.  Is Java installed?
    goto :EOF
) else (
    setlocal disabledelayedexpansion & echo Found! & endlocal
    echo !javaexe!
    echo Relax and enjoy the show.
)

预期结果:

mylist=[[' Dish Towel .\n', '1.000', '149.000'],
 [' Dish Towel .\n', '1.000', '149.000'],
 [' Kitchentowel(mix designs) .\n', '1.000', '99.000'],
 [' Kitchentowel(mix designs) .\n', '1.000', '99.000']]

我试过这个,但我得到了TypeError。

newlist=[[' Dish Towel .\n', '1.000', '149.000'],
 [' Kitchentowel(mix designs) .\n', '1.000', '99.000']]

2 个答案:

答案 0 :(得分:5)

您可以使用set保留唯一项目:

>>> set(map(tuple,mylist))
set([(' Kitchentowel(mix designs) .\n', '1.000', '99.000'), (' Dish Towel .\n', '1.000', '149.000')]) 

请注意,由于set只接受可混合对象,因此您需要将列表转换为元组,然后使用set

答案 1 :(得分:3)

您可以尝试以下方式:

output = []
for x in mylist:
    if x not in output:
        output.append(x)
print output