1. ホーム

Pythonのsort関数とsorted関数の違いとpythonのエラーについて。AttributeError: 'list' オブジェクトに 'sorted' 属性がない 理由

2022-02-10 23:44:02

python: AttributeError: 'list' オブジェクトは 'sorted' という属性を持っていません 理由。

sort()とsorted()の違いに注意を払わない

sort()はメソッド、sorted()は関数です。
この2つは形を変えて使われています。

メソッドは、例えば list2.sort() のように .sort() メソッドと一緒に呼び出されます。


データを渡すための関数は、同じように使うことはできません。  例えば、sorted(list2)は


説明

.sort() と sorted() はどちらも Python に組み込まれており、オブジェクトをソートすることができます。

構文

i.      ソート済み()

sorted ( イテラブル * キー=なし リバース=ファルス )

sorted() 関数には、ソート後の新しいリストである戻り値があります。

キーワード引数として指定しなければならない2つのオプション引数があります。

キー

元のオブジェクトから関数が抽出した条件をキーとして指定し、返されたパラメータをキーとして元のオブジェクトの要素をソートして表示する。

例えば 

key=str.lower
The default value is None, which sorts elements directly, as in a dictionary, with key names as keywords.

リバース

 値をブール値で指定します。 2つだけあります(TrueかFalse、大文字に注意)。

もし値が True であれば、逆順、つまり降順でソートされます。

 例

x=sorted(cars)

print(x) carsリストの内容は変わっていません。

cars.sort() 元のリストは直接メソッドを呼び出すので、ソートされて元に戻りません

sort はリスト型のソート関数で、関数のプロトタイプは以下の通りです。L.sort(key=None, reverse=False), このメソッドは戻り値を持たず、リストのソートインプレイスである。

key - は、リスト要素の重みを比較するために使用されるキーワードです。key は一般に、1つの要素のみを受け取り、その重みを返す関数(または無名関数)を受け入れるために使用されます。

reverse -- 順序を逆にするかどうか
```
a = ['Google', 'Runoob', 'Taobao', 'Facebook' ]。
a.sort() # デフォルトでは最初の文字でソートされます。
print(a)
a.sort(key= lambda x : x[1]) # 2文字目で並べ替え
print(a)
def takeSecond(x):
    return x[1]
a.sort(key=takeSecond)
print(a)


sorted はすべての反復可能オブジェクトに対してソート操作を行うことができ、 特に sorted(iterable, key=None, reverse=False) の形式で辞書をソートすることができます。

sorted関数は戻り値を持っています。

d = {'lily':25, 'wangjun':22, 'John':25, 'Mary':19} とする。
sorted_keys = sorted(d) # 辞書の場合、デフォルトではキーのソートが行われます。
print(sorted_keys)を実行します。
sorted_keys1 = sorted(d, key=lambda x : x[1])
print(d_new2)
d_new = sorted(d.items(), key=lambda x: x[1], reverse=True) # 年齢でソートし、リスト形式で返す
print(d_new)
d_new = dict(d_new) # ネストされたリストを辞書に変換する組み込み関数を使用する
print(d_new)
sorted_values = sorted(d.values(), key=lambda x:x, reverse=False) # 並べ替えられた値
print(sorted_values)