0

URL のリストをソートする Jython スクリプトを作成しています。

次のようなリストがあります。

http://www.domain.com/folder1/folder2/|,1
http://www.domain.com/folder1/|,1
http://www.domain.com/folder1/folder2/folder3/|, 1
http://www.domain.com/folder1/|,1
http://www.domain.com/folder1/folder2/|,1
http://www.domain.com/folder1/folder2/|,1
http://www.domain.com/folder1/folder2/folder3/|,1

パイプとコンマは、そのパスの下にあるファイルの量からパスを区切ります。Jython を使用して URL を長さで並べ替える方法はあるのでしょうか。最終的には以下のリストのようになります。

http://www.domain.com/folder1/|,1
http://www.domain.com/folder1/|,1
http://www.domain.com/folder1/folder2/|,1
http:/ /www.domain.com/folder1/folder2/|,1
http://www.domain.com/folder1/folder2/|,1
http://www.domain.com/folder1/folder2/folder3/|,1
http://www.domain.com/folder1/folder2/folder3/|,1

皆さんが私の言いたいことを理解してくれることを願っています。乾杯

4

3 に答える 3

3

並べ替え関数を使用して、長さで並べ替えます。

urls.sort(lambda a, b: cmp(len(a), len(b)))

パフォーマンスのために、decorate-sort-undecorate パターンを好む人もいるかもしれません:

urllengths= [(len(url), url) for url in urls]
urllengths.sort()
urls= [url for (l, url) in urllengths]

またはワンライナーとして:

urls= zip(*sorted((len(url), url) for url in urls))[1]
于 2008-10-30T10:24:35.883 に答える
1

jython がpython 2.4に追いつくまで、 key引数をlist.sort()に使用することはできません:

mylist.sort(key=len)

ですから、古き良き時代のように、飾る-並べ替える-装飾しないというイディオムがあります。mylistアイテムの長さでソートするには、タプルの を生成し、それdecorated_list(len(item),item)ソートして、最後にアイテムを取り除きます。

decorated_list = zip(map(len, mylist), mylist)
decorated_list.sort()
sorted_list = [i[1] for i in decorated_list]
于 2008-10-30T10:33:41.777 に答える
0

それらを並べ替えることでこれを処理できませんか?

于 2008-10-30T10:08:38.393 に答える