您好,登錄后才能下訂單哦!
本篇內容介紹了“python列表套json字典怎么根據相同的key篩選數據”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
前言:
工作中遇到以下小問題,解決方法如下,可能比較暴力,暫時留檔,再進行優化。
要求:將列表中json的 ‘id’ 字段值相同的數據,根據 type的值,按照一定的優先級次序排列,列表中僅保留優先級最高的type
。
測試用例:
list1 示例數據:
type優先級列表:[6, 4, 2, 5, 8, 3, 7, 1] (依次遞減,6優先級最高,1優先級最低)
draw_data = [ {'geometry':{"coordinates":[121.87635833333333, 30.86567777777778]},"properties":{'type':'8'}, "id": "03N3211"}, {'geometry':{"coordinates":[121.87635833333333, 30.86567777777778]},"properties":{'type':'5'}, "id": "01N2234"}, {'geometry':{"coordinates":[121.87635833333333, 30.86567777777778]},"properties":{'type':'8'}, "id": "03N3211"}, {'geometry':{"coordinates":[121.8758861111111, 30.866086111111112]},"properties":{'type':'32'}, "id": "01N2234"}, {'geometry':{"coordinates":[121.87635833333333, 30.86567777777778]},"properties":{'type':'8'}, "id": "09N1111"}, {'geometry':{"coordinates":[121.87635833333333, 30.86567777777778]},"properties":{'type':'11'}, "id": "03N3211"}, {'geometry':{"coordinates":[121.87635833333333, 30.86567777777778]},"properties":{'type':'2'}, "id": "09N1111"}, {'geometry':{"coordinates":[121.87705277777778, 30.86705]}, "properties": {'type': '2'}, "id": "01N2234"} ]
以上結果應該為:
draw_data = [ {'geometry':{"coordinates":[121.8758861111111, 30.866086111111112]},"properties":{'type':'32'}, "id": "01N2234"}, {'geometry':{"coordinates":[121.87635833333333, 30.86567777777778]},"properties":{'type':'8'}, "id": "09N1111"}, {'geometry':{"coordinates":[121.87635833333333, 30.86567777777778]},"properties":{'type':'11'}, "id": "03N3211"}, ]
def removeduplicate(self, list1, priority=None): """ 列表套字典去重復, 篩選相同組串id優先級最高的類型 :param list1: 輸入一個有重復值的列表 :priority : 優先級列表 :return: 返回一個去掉重復的列表 """ sort_dict = {'6': 100, '4': 99, '2': 98, '5': 97, '8': 96, '3': 95, '7': 94, '1': 93} # self.types 顏色表按優先級排序 newlist = [] print("list1:", list1) for ind_i, i in enumerate(list1): # 先遍歷原始字典 flag = True if newlist == []: # 如果是空的列表就不會有重復,直接往里添加 pass else: for ind_j, j in enumerate(newlist): j_id = j['id'] if j_id == i['id']: # 相同id if sort_dict[j['properties']['type']] <= sort_dict[i['properties']['type']]: newlist[ind_j] = i else: flag=False else: # 不相等,id可能已經出現過 for ind_li, li in enumerate(newlist): if i['id'] == li['id']: if sort_dict[i['properties']['type']] >= sort_dict[li['properties']['type']]: newlist[ind_li] = i else: flag = False if flag: newlist.append(i) return newlist
“python列表套json字典怎么根據相同的key篩選數據”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。