>  기사  >  백엔드 개발  >  Python 프로그래밍을 사용하여 목록의 사전 요소를 정렬하는 방법에 대한 자세한 설명

Python 프로그래밍을 사용하여 목록의 사전 요소를 정렬하는 방법에 대한 자세한 설명

黄舟
黄舟원래의
2017-05-28 11:12:172149검색

이 글에서는 주로 목록의 사전 요소를 정렬하는 Python프로그래밍방법을 소개하며, 목록과 사전 요소의 순회, 읽기, 변환과 관련된 Python의 조작 기술이 포함되어 있습니다. 도움이 필요한 친구는 이 글을 참조할 수 있습니다

예제에서는 방법을 설명합니다. Python 프로그래밍을 사용하여 목록의 사전 요소를 정렬합니다. 다음과 같이 참조용으로 모든 사람과 공유하세요.

1. 문제의 원인 2. 목록에서 사전 요소 정렬

json

(사전 순서 무시) 목록에서)

1. 문제의 원인

jsonobjecta,b

a = '{"ROAD": [{"id": 123}, {"name": "no1"}]}'
b = '{"ROAD": [{"name": "no1"}, {"id": 123}]}'

특징: a,b는 Python 객체의 키 값에 해당합니다. 목록에는 동일한 사전 요소가 포함되어 있지만 유일한 차이점은 순서입니다. 순서가 무시되는 경우 두 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. 목록의 사전 요소 정렬

다행히 목록에는 sorted

기능

이 있으므로 사용해 보세요

>>> 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.