ホームページ >バックエンド開発 >Python チュートリアル >Pythonプログラミングを使用してリスト内の辞書要素をソートする方法の詳細な説明
この記事では、リスト内の辞書要素を並べ替えるPythonプログラミングメソッドを主に紹介します。これには、リストと辞書要素の走査、読み取り、変換に関連する Python の操作スキルが含まれます。必要な方は、この記事を参照してください。
例では、その方法について説明します。 Python プログラミングを使用してリスト内の辞書要素を並べ替えます。参考として、次のように全員と共有します。コンテンツ ディレクトリ:
1. 問題の原因2. リスト内の辞書要素を並べ替える
3. (辞書の順序を無視して)
jsonobject
a,ba = '{"ROAD": [{"id": 123}, {"name": "no1"}]}' b = '{"ROAD": [{"name": "no1"}, {"id": 123}]}'
特徴: a、bはPythonオブジェクトのキーの値に対応します。 list には同じ辞書要素が含まれていますが、順序が異なるだけです。順序が無視された場合に 2 つの JSON が等しいかどうかを確認する方法。辞書自体はキーでソートされており、リストは結合順にソートされているため、リスト内の辞書要素をソートすると簡単にソートできます。リストに通常の要素 (辞書ではない) が含まれている場合は、
list
set()) の組み合わせでリストを読み取って並べ替えることができます。ただし、リストに辞書要素が含まれている場合は、list(set()) の組み合わせを使用します。ヒントは、
>>> a = [{'a':1, 'b':2}, {'c':3}] >>> a [{'a': 1, 'b': 2}, {'c': 3}] >>> b = set(a) Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> b = set(a) TypeError: unhashable type: 'dict'
を参照してください。プロンプトは、辞書がハッシュ化できない型であるということです (通常の非辞書要素はハッシュ化によって簡単にソートできます)。
幸いなことに、リストには sort
ed>>> p = [{'b': 2}, {'a': 1, 'c': 3}] >>> q = [{'a': 1, 'c': 3}, {'b': 2}] >>> p [{'b': 2}, {'a': 1, 'c': 3}] >>> q [{'a': 1, 'c': 3}, {'b': 2}] >>> pp = sorted(p) >>> qq = sorted(q) >>> pp [{'b': 2}, {'a': 1, 'c': 3}] >>> qq [{'b': 2}, {'a': 1, 'c': 3}] >>> pp == qq True >>> p == q False
と、それが問題ないことがわかります。ソートの原則は要素の数です。
import json def compare_json(a, b): aa = json.loads(a) bb = json.loads(b) len_a = len(aa) len_b = len(bb) if len_a != len_b: return False else: for key in aa: if not bb.has_key(key): return False else: if sorted(aa[key]) != sorted(bb[key]): return False return True if name == "main": a = '{"ROAD": [{"id": 123}, {"name": "no1"}]}' b = '{"ROAD": [{"name": "no1"}, {"id": 123}]}' print compare_json(a, b)
詳細: json 形式を自分で記述する場合、 a = "{'road':1}" json.loads( a ) は間違っています。a = '{"road:1}' [一重引用符は除外されます]
として記述する必要があります。
以上がPythonプログラミングを使用してリスト内の辞書要素をソートする方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。