Python编程如何对列表中字典元素进行排序的方法详解


这篇文章主要介绍了Python编程对列表中字典元素进行排序的方法,涉及Python针对列表及字典元素的遍历、读取、转换相关操作技巧,需要的朋友可以参考下
本文实例讲述了Python编程对列表中字典元素进行排序的方法。分享给大家供大家参考,具体如下:
内容目录:
1. 问题起源
2. 对列表中的字典元素排序
3. 对json进行比较(忽略列表中字典的顺序)
一、问题起源
json对象a,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: 'dict'提示为字典是不可进行哈希操作的类型(普通非字典的元素进行哈希操作即可轻松排好序)。
那么问题的本质即:如何对列表中的字典元素排序。
二、对列表中的字典元素排序
还好,列表有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可以看出,ok的,并且可以看出排序的原则是元素个数。
三、对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}' 【单引号在外】

  • pythonlist鍖呭惈鍑芥暟鎬庝箞鐢?
    绛旓細鍙兘闇瑕佽冭檻浣跨敤鍏朵粬鏁版嵁缁撴瀯鎴栦紭鍖栫瓥鐣ユ潵鎻愰珮鎬ц兘銆傛讳箣锛Python鐨勫垪琛鍖呭惈璁稿寮哄ぇ鐨勫唴缃嚱鏁板拰鏂规硶锛屽彲浠ョ敤浜庡鐞嗗悇绉嶆暟鎹搷浣滃拰浠诲姟銆傞氳繃姝g‘浣跨敤杩欎簺鍑芥暟鍜屾柟娉曪紝鍙互绠鍖栦唬鐮佸苟鎻愰珮浠g爜鐨勫彲璇绘у拰鏁堢巼銆傞氳繃瀹炶返鍜屼笉鏂涔狅紝鎮ㄥ皢鑳藉鏇存繁鍏ュ湴浜嗚В濡備綍浣跨敤杩欎簺鍔熻兘鏉ュ寮烘偍鐨Python缂栫▼鎶鑳姐
  • python骞茶揣:pop()鍑芥暟鐨勭敤娉昜寮瑰嚭鍒犻櫎鍔熻兘]
    绛旓細娣卞叆鐞嗚ВPython涓笉鍙垨缂虹殑pop()鍑芥暟锛氬脊鍑烘搷浣滅殑鑹烘湳 鍦Python缂栫▼涓锛鍒楄〃鎿嶄綔鏄暟鎹鐞嗙殑鍩虹煶涔嬩竴銆傚脊鍑哄姛鑳斤紝涔熷氨鏄氳繃pop()鍑芥暟锛屼负鍒楄〃璧嬩簣浜嗗姩鎬佹у拰鐏垫椿鎬с傚畠褰㈣薄鍦版瘮鍠讳负鏍堢粨鏋勶紝閫氳繃鍒犻櫎鍏冪礌锛屾垜浠兘杞绘澗瀹炵幇鏁版嵁鐨勮繘鍑哄拰绠$悊銆傚熀纭鎿嶄綔锛氬垹闄ゅ苟杩斿洖鏈鍚庝竴涓厓绱 pop()鏂规硶鐨勬牳蹇冨姛鑳藉氨鏄粠...
  • Python.濡備綍鍚戝瓧鍏竏ict閲屽姞鍏ュ唴瀹筧
    绛旓細銆傚湪璁捐Python璇█鏃讹紝濡傛灉闈复澶氱閫夋嫨锛孭ython寮鍙戣呬竴鑸細鎷掔粷鑺变繌鐨勮娉曪紝鑰岄夋嫨鏄庣‘鐨勬病鏈夋垨鑰呭緢灏戞湁姝т箟鐨勮娉曘傜敱浜庤繖绉嶈璁¤蹇电殑宸紓锛孭ython婧愪唬鐮侀氬父琚涓烘瘮Perl鍏峰鏇村ソ鐨勫彲璇绘э紝骞朵笖鑳藉鏀拺澶ц妯$殑杞欢寮鍙戙傝繖浜涘噯鍒欒绉颁负Python鏍艰█銆傚湪Python瑙i噴鍣ㄥ唴杩愯import this鍙互鑾峰緱瀹屾暣鐨鍒楄〃銆
  • python 濡備綍灏鍒楄〃杞负瀛楀吀,key鍊肩浉鍚屽垯鍚堝苟value
    绛旓細a='榻愬缓鍥 榻愬缓鍥 榻愪簩鐭 榛勯瞾鎴 榛勬触瀛'.split()b=[13,33,38,26,31]d={}for x in range(len(a)): if a[x] in d: d[a[x]]+=[b[x]] else: d[a[x]]=[b[x]]print(d)
  • pyp(Python缂栫▼璇█)
    绛旓細鍒楄〃鎿嶄綔 Python涓鐨勫垪琛ㄦ槸涓绉嶆湁搴忕殑銆佸彲鍙樼殑鏁版嵁绫诲瀷锛屽彲浠ュ瓨鍌ㄥ涓厓绱犮傛垜浠彲浠ヤ娇鐢ㄦ柟鎷彿锛圼]锛夋潵鍒涘缓鍒楄〃锛屽苟浣跨敤绱㈠紩鏉ヨ闂鍒楄〃涓鐨勫厓绱犮備緥濡傦細fruits=["apple","banana","orange"]print(fruits[0])鐗嬭緭鍑虹粨鏋滀负"apple"fruits.append("grape")print(fruits)鐗嬭緭鍑虹粨鏋滀负["apple","banana",...
  • 濡備綍鐢python缂栫▼?
    绛旓細Python 3 鏄竴绉嶆祦琛岀殑缂栫▼璇█锛屾偍鍦ㄤ竴琛屽紑澶寸湅鍒扮殑琛ㄧず姝よ鏄偍鍙互鍦 Python 3 瑙i噴鍣ㄤ腑杈撳叆鐨勫懡浠ゃ>>> 鎮ㄦ彁渚涚殑浠g爜鍦ㄤ互 寮澶寸殑琛屼笂娌℃湁瀹屾暣鐨勮鍙ワ紝鍥犳鏃犳硶纭畾姝や唬鐮佺殑缁撴灉鏄粈涔堛備絾鏄紝濡傛灉浠g爜鏄畬鏁寸殑锛屽畠鍙兘浼氬垱寤轰竴涓柊鐨鍒楄〃瀵硅薄锛屽苟涓哄叾鍒嗛厤涓浜涘笺>>>list2=list2 涓嬮潰鏄濡備綍...
  • python涓鐨刬nput()銆乮sinstance()鍑芥暟濡備綍浣跨敤?
    绛旓細鍙﹀瀹冭繕鍙互鐢ㄤ簬妫鏌ュ璞$殑灞炴ф槸鍚﹀瓨鍦ㄧ瓑鍦烘櫙鍙渶瑕佸鐩稿簲鐨勫璞′娇鐢╣etattr鍑芥暟鐒跺悗浼犻掔浉搴旂殑灞炴у悕绉颁綔涓哄弬鏁板氨鍙互寰楀埌瀵瑰簲鐨勭粨鏋滀粠鑰屽鍚庣画鐨勪唬鐮侀昏緫浜х敓褰卞搷鍜屽垽鏂傚湪Python缂栫▼涓鍙戞尌鐫閲嶈鐨勪綔鐢ㄥ拰骞挎硾鐨勫簲鐢ㄥ満鏅傞氳繃浣跨敤杩欎袱涓嚱鏁板彲浠ユ洿鍔犵伒娲诲湴澶勭悊鐢ㄦ埛杈撳叆骞跺仛鍑哄噯纭殑绫诲瀷鍒ゆ柇浠庤屽寮虹▼搴忕殑鍋ュ....
  • Python涓鐨鍒楄〃鎺ㄥ寮忔槸鎬庝箞绠鍖栦唬鐮佺殑?
    绛旓細褰撴垜浠渶瑕佸涓涓垪琛ㄨ繘琛屾搷浣滄椂锛屼娇鐢ㄥ惊鐜鍙ユ槸涓绉嶅父瑙佺殑鏂瑰紡銆備絾鏄湪Python涓锛屽垪琛ㄦ帹瀵煎紡鍙互鏇村姞绠娲佸湴瀹炵幇鐩稿悓鐨勫姛鑳姐備互涓嬫槸涓涓釜鍒楄〃鎺ㄥ寮忕殑渚嬪瓙锛屼互鍙婂畠浠浉姣旀甯稿惊鐜殑绠娲佷箣澶勶細鍋囧鎴戜滑鎯冲皢涓涓鍒楄〃涓鐨勬瘡涓厓绱犻兘涔樹互2锛岀劧鍚庤緭鍑哄嚭鏉 浣跨敤寰幆璇彞瀹炵幇鐨勬柟娉曞涓 nums = [1, 2, 3, 4...
  • 鐢python缂栫▼,杈撳叆涓涓插瓧绗︿覆鍙湁鏁板瓧鍜屽瓧姣,鎵惧嚭鎵鏈変笉閲嶅鐨勫厓绱...
    绛旓細s=input('璇疯緭鍏ヤ竴涓彧鐢辨暟瀛楀拰瀛楁瘝鏋勬垚鐨勫瓧绗︿覆锛')print([e for e in s if 1==s.count(e)])
  • 扩展阅读:少儿python编程自学 ... 少儿编程收费价目表 ... 少儿编程机构十大排名 ... c++和python先学哪个 ... python初学编程必背 ... python编程入门自学 ... 学python后到底能干什么 ... 编程一般要学多久 ... 初学编程必背50个 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网