ホームページ >バックエンド開発 >Python チュートリアル >Pythonプログラミングを使用してリスト内の辞書要素をソートする方法の詳細な説明

Pythonプログラミングを使用してリスト内の辞書要素をソートする方法の詳細な説明

黄舟
黄舟オリジナル
2017-05-28 11:12:172195ブラウズ

この記事では、リスト内の辞書要素を並べ替えるPythonプログラミングメソッドを主に紹介します。これには、リストと辞書要素の走査、読み取り、変換に関連する Python の操作スキルが含まれます。必要な方は、この記事を参照してください。

例では、その方法について説明します。 Python プログラミングを使用してリスト内の辞書要素を並べ替えます。参考として、次のように全員と共有します。

コンテンツ ディレクトリ:

1. 問題の原因

2. リスト内の辞書要素を並べ替える
3. (辞書の順序を無視して)

1. 問題の原因

jsonobject

a,b

a = '{"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: &#39;dict&#39;

を参照してください。プロンプトは、辞書がハッシュ化できない型であるということです (通常の非辞書要素はハッシュ化によって簡単にソートできます)。

それでは、問題の本質は、リスト内の辞書要素をどのようにソートするかということです。

2. リスト内の辞書要素を並べ替えます

幸いなことに、リストには sort

ed

関数 があります。試してみてください

>>> p = [{&#39;b&#39;: 2}, {&#39;a&#39;: 1, &#39;c&#39;: 3}]
>>> q = [{&#39;a&#39;: 1, &#39;c&#39;: 3}, {&#39;b&#39;: 2}]
>>> p
[{&#39;b&#39;: 2}, {&#39;a&#39;: 1, &#39;c&#39;: 3}]
>>> q
[{&#39;a&#39;: 1, &#39;c&#39;: 3}, {&#39;b&#39;: 2}]
>>> pp = sorted(p)
>>> qq = sorted(q)
>>> pp
[{&#39;b&#39;: 2}, {&#39;a&#39;: 1, &#39;c&#39;: 3}]
>>> qq
[{&#39;b&#39;: 2}, {&#39;a&#39;: 1, &#39;c&#39;: 3}]
>>> pp == qq
True
>>> p == q
False

と、それが問題ないことがわかります。ソートの原則は要素の数です。

3. json を比較します (リスト内の辞書の順序を無視します)

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 = &#39;{"ROAD": [{"id": 123}, {"name": "no1"}]}&#39;
  b = &#39;{"ROAD": [{"name": "no1"}, {"id": 123}]}&#39;
  print compare_json(a, b)

詳細: json 形式を自分で記述する場合、 a = "{'road':1}" json.loads( a ) は間違っています。a = '{"road:1}' [一重引用符は除外されます]
として記述する必要があります。

以上がPythonプログラミングを使用してリスト内の辞書要素をソートする方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。