欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python編程對列表中字典元素進行排序的方法詳解

 更新時間:2017年05月26日 11:21:17   作者:jihite  
這篇文章主要介紹了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)

細節(jié):自己寫json格式時,a = "{'road':1}"  json.loads(a) 錯誤,得寫成a = '{"road:1}'  【單引號在外】

PS:關于json操作,這里再為大家推薦幾款比較實用的json在線工具供大家參考使用:

在線JSON代碼檢驗、檢驗、美化、格式化工具:
http://tools.jb51.net/code/json

JSON在線格式化工具:
http://tools.jb51.net/code/jsonformat

在線XML/JSON互相轉換工具:
http://tools.jb51.net/code/xmljson

json代碼在線格式化/美化/壓縮/編輯/轉換工具:
http://tools.jb51.net/code/jsoncodeformat

在線json壓縮/轉義工具:
http://tools.jb51.net/code/json_yasuo_trans

更多Python相關內容感興趣的讀者可查看本站專題:《Python操作json技巧總結》、《Python編碼操作技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • 簡單了解python中的與或非運算

    簡單了解python中的與或非運算

    這篇文章主要介紹了簡單了解python中的與或非運算,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • 用Python搶火車票的簡單小程序實現(xiàn)解析

    用Python搶火車票的簡單小程序實現(xiàn)解析

    這篇文章主要介紹了用Python搶火車票的簡單小程序實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • python添加菜單圖文講解

    python添加菜單圖文講解

    在本篇文章中小編給大家整理的是關于python添加菜單圖文講解以及步驟分析,需要的朋友們學習下吧。
    2019-06-06
  • Python閉包及裝飾器運行原理解析

    Python閉包及裝飾器運行原理解析

    這篇文章主要介紹了python閉包及裝飾器運行原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • python實現(xiàn)雙人版坦克大戰(zhàn)游戲

    python實現(xiàn)雙人版坦克大戰(zhàn)游戲

    這篇文章主要為大家詳細介紹了python實現(xiàn)雙人版坦克大戰(zhàn)游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Python爬蟲之Selenium下拉框處理的實現(xiàn)

    Python爬蟲之Selenium下拉框處理的實現(xiàn)

    這篇文章主要介紹了Python爬蟲之Selenium下拉框處理的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Pytorch之擴充tensor的操作

    Pytorch之擴充tensor的操作

    這篇文章主要介紹了Pytorch之擴充tensor的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 在django-xadmin中APScheduler的啟動初始化實例

    在django-xadmin中APScheduler的啟動初始化實例

    今天小編就為大家分享一篇在django-xadmin中APScheduler的啟動初始化實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • python中Pyqt5使用Qlabel標簽進行視頻播放

    python中Pyqt5使用Qlabel標簽進行視頻播放

    這篇文章主要介紹了python中Pyqt5使用Qlabel實現(xiàn)標簽進行視頻播放,QLabel是界面中的標簽類,繼承自QFrame類,提供文本和圖像的顯示,是一種展示控件,下文相關內容介紹需要的小伙伴可以參考一下
    2022-04-04
  • PyCharm 2020 激活到 2100 年的教程

    PyCharm 2020 激活到 2100 年的教程

    這篇文章主要介紹了PyCharm 2020 激活到 2100 年,本文圖文并茂給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03

最新評論