이 글에서는 주로 목록의 사전 요소를 정렬하는 Python프로그래밍방법을 소개하며, 목록과 사전 요소의 순회, 읽기, 변환과 관련된 Python의 조작 기술이 포함되어 있습니다. 도움이 필요한 친구는 이 글을 참조할 수 있습니다
예제에서는 방법을 설명합니다. Python 프로그래밍을 사용하여 목록의 사전 요소를 정렬합니다. 다음과 같이 참조용으로 모든 사람과 공유하세요.
1. 문제의 원인 2. 목록에서 사전 요소 정렬
jsonjsonobjecta,b
a = '{"ROAD": [{"id": 123}, {"name": "no1"}]}' b = '{"ROAD": [{"name": "no1"}, {"id": 123}]}'특징: a,b는 Python 객체의 키 값에 해당합니다. 목록에는 동일한 사전 요소가 포함되어 있지만 유일한 차이점은 순서입니다. 순서가 무시되는 경우 두 json이 동일한지 확인하는 방법 사전은 자체적으로 키를 기준으로 정렬하고 목록은 조인된 순서대로 정렬하기 때문에 목록에 있는 사전 요소를 정렬하면 쉽게 정렬할 수 있습니다. 목록에 사전이 아닌 일반 요소가 포함되어 있으면
list
(
()) 조합을 통해 목록을 읽고 정렬할 수 있습니다. 그러나 목록에 사전 요소가 포함되어 있으면 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'사전은 해싱할 수 없는 유형입니다(일반적인 비사전 요소는 해싱을 통해 쉽게 정렬할 수 있습니다).
그러면 문제의 본질은 목록에서 사전 요소를 정렬하는 방법입니다.
2. 목록의 사전 요소 정렬
다행히 목록에는 sorted
기능>>> 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을 사용하면 괜찮다는 것을 알 수 있습니다. 정렬 원칙은 요소 수입니다.
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 = '{"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 중국어 웹사이트의 기타 관련 기사를 참조하세요!