从嵌套词典列表中删除重复值

2024-05-23 13:37:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有嵌套结构的词典列表。我需要删除所有重复的值。我是Python的新手,不能解决这个任务。有人能帮我吗?你知道吗

我的列表如下所示:

[  
   {  
      "task_id":123,
      "results":[  
         {  
            "url":"site.com",
            "date":"04.18.2019"
         },
         {  
            "url":"another_site.com",
            "date":"04.18.2019"
         },
         {  
            "url":"site1.com",
            "date":"04.18.2019"
         }
      ]
   },
   {  
      "task_id":456,
      "results":[  
         {  
            "url":"site3.com",
            "date":"04.18.2019"
         },
         {  
            "url":"site.com",
            "date":"04.18.2019"
         }
      ]
   },
   {  
      "task_id":789,
      "results":[  
         {  
            "url":"site7.com",
            "date":"04.18.2019"
         },
         {  
            "url":"site9.com",
            "date":"04.18.2019"
         },
         {  
            "url":"site.com",
            "date":"04.18.2019"
         }
      ]
   }
]

我要准备一下网站.com只有一次。如果url的任何值是重复的-从dict中排除它

结果是: 任务123,结果是3个单词 任务456,结果中有1个dict(排除网站.com) 任务789有2个dict结果(不包括网站.com)你知道吗

所需输出应如下所示:

[  
   {  
      "task_id":123,
      "results":[  
         {  
            "url":"site.com",
            "date":"04.18.2019"
         },
         {  
            "url":"another_site.com",
            "date":"04.18.2019"
         },
         {  
            "url":"site1.com",
            "date":"04.18.2019"
         }
      ]
   },
   {  
      "task_id":456,
      "results":[  
         {  
            "url":"site3.com",
            "date":"04.18.2019"
         }
      ]
   },
   {  
      "task_id":789,
      "results":[  
         {  
            "url":"site7.com",
            "date":"04.18.2019"
         },
         {  
            "url":"site9.com",
            "date":"04.18.2019"
         }
      ]
   }
]

Tags: comidurl列表taskdate网站another
3条回答

results成为你的数组。你知道吗

u = set()
final = []
for dict in results:
   for res in dict["results"]:
      if res["url"] not in u:
         u.add(res["url"])
         final.append(res)
print(final)

您可以使用列表:

d = [{'task_id': 123, 'results': [{'url': 'site.com', 'date': '04.18.2019'}, {'url': 'another_site.com', 'date': '04.18.2019'}, {'url': 'site1.com', 'date': '04.18.2019'}]}, {'task_id': 456, 'results': [{'url': 'site3.com', 'date': '04.18.2019'}, {'url': 'site.com', 'date': '04.18.2019'}]}, {'task_id': 789, 'results': [{'url': 'site7.com', 'date': '04.18.2019'}, {'url': 'site9.com', 'date': '04.18.2019'}, {'url': 'site.com', 'date': '04.18.2019'}]}]
new_d = [{**a, 'results':[c for c in a['results'] if all(c not in b['results'] for b in d[:i])]} for i, a in enumerate(d)]

输出:

[
  {
    "task_id": 123,
    "results": [
        {
            "url": "site.com",
            "date": "04.18.2019"
        },
        {
            "url": "another_site.com",
            "date": "04.18.2019"
        },
        {
            "url": "site1.com",
            "date": "04.18.2019"
        }
    ]
},
{
    "task_id": 456,
    "results": [
        {
            "url": "site3.com",
            "date": "04.18.2019"
        }
    ]
},
{
    "task_id": 789,
    "results": [
        {
            "url": "site7.com",
            "date": "04.18.2019"
        },
        {
            "url": "site9.com",
            "date": "04.18.2019"
        }
     ]
   }
]
 people = {
          1: {'name': 'John',},
              2: {'name': 'Marie'},
          3: {'name': 'Ann',},
          4: {'name': 'John'},
     }
print(people)
unique = {}
for key, value in people.items(): 
       if value not in unique.values(): 
          unique[key] = value
print(unique)

试试这些

相关问题 更多 >