如何查找列表列表的唯一项目?
在以下示例中,我只期望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']]
答案 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