亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

解析嵌套字典Python中的列表

解析嵌套字典Python中的列表

大話西游666 2023-05-16 15:52:50
data = {    "persons": {"1": {"name": "siddu"}, "2": {"name": "manju"}},    "cars": {        "model1": {            "make": 1990,            "company_details": {                "name": "Ford Corporation",                "country": "US",                "some_list": [1, 2, 1],            },        },        "model2": {            "make": 1990,            "company_details": {                "name": "Ford Corporation",                "country": "US",                "some_list": [1, 2, 1, 1, 1],            },        },    },}這是我的 python 對象,如何識別鍵值是一個列表。這里的例子,在遍歷'print(data["cars"]["model1"]["company_details"]["some_list"])'之后我得到了列表,因為它是一個小字典很容易,但我怎么能如果我將來遇到 list 作為其他鍵的值,則標識相同。例子:data = {    "persons": {"1": {"name": "siddu"}, "2": {"name": "manju"}},    "cars": {        "model1": {            "make": 1990,            "company_details": {                "name": "Ford Corporation",                "country": "US",                "some_list": [1, 2, 1],            },        },        "model2": {            "make": 1990,            "company_details": {                "name": "Ford Corporation",                "country": ["US", "UK", "IND"],                "some_list": [1, 2, 1, 1, 1],            },        },    },}任何人都可以建議/指導我了解如何識別鍵的值是一個列表。最終目標是刪除列表中的重復項(如果存在)?非常感謝:)
查看完整描述

1 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

你可以有一個遞歸函數,它可以達到任何深度,并使列表中的項目獨一無二,如下所示:


In [8]: def removeDuplicatesFromList(di):

   ...:     for key, val in di.items():

   ...:         if isinstance(val, dict):

   ...:             removeDuplicatesFromList(val)

   ...:         elif isinstance(val, list):

   ...:             di[key] =list(set(val))

   ...:         else:

   ...:             continue

   ...:

   ...:

In [9]: removeDuplicatesFromList(data)


In [10]: data

Out[10]:

{'persons': {'1': {'name': 'siddu'}, '2': {'name': 'manju'}},

 'cars': {'model1': {'make': 1990,

   'company_details': {'name': 'Ford Corporation',

    'country': 'US',

    'some_list': [1, 2]}},

  'model2': {'make': 1990,

   'company_details': {'name': 'Ford Corporation',

    'country': 'US',

    'some_list': [1, 2]}}}}


查看完整回答
反對 回復 2023-05-16
  • 1 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號