0

Python でディレクトリを一覧表示したいと考えています。私のディレクトリには次の名前のファイルしかありません:

A1, A2, A3,..., A10, A11,..., B1,B2, ..., B10, B11 ...

問題は、Pythonでアルファベット順に並べようとすると、次のようになることです:

listQuery = os.listdir('C:\\query\\')
listQuery.sort()

私は次の注文を得ました:

A1, A10, A11, ... ,A2 ... 

だから私の質問は、最初にそれらをアルファベット順に並べてから、数字で並べ替えるにはどうすればよいかということです

4

1 に答える 1

1

次のようなソートキー関数を作成します。

def my_order(value):
    return (value[0], int(value[1:]))

次に、それを使用してリストを並べ替えます。

listQuery.sort(key=my_order)

これにより、リスト内のすべての値に対して関数が呼び出さmy_orderれ、新しく計算された値に基づいてリストが並べ替えられます。これは、「装飾-並べ替え-非装飾」(「DSU」) または「シュワルツ変換」としても知られています。

この場合、 、 などのタプルのリストが作成されます。Python('A', 2)('A', 11)、個々の値に基づいてタプルをソートします。2 つのタプルの最初の値が同じ場合 ( など'A')、次の値のペア (211ここ) に移動します。どちらも整数なので、数値順に並べ替えます。その順序を使用して、元のリストを並べ替えます。

于 2013-09-27T03:40:52.020 に答える