Py学习  »  Python

如何在python中根据字典键获取唯一的数据

Soubhagya Pradhan • 6 年前 • 1536 次点击  
  [
    {'id': 589, 'series': 17, 'job_id': 19103},
    {'id': 590, 'series': 17, 'job_id': 19103},
    {'id': 584, 'series': 18, 'job_id': 19103},
    {'id': 585, 'series': 18, 'job_id': 19103},
    {'id': 597, 'series': 18, 'job_id': 19103},
    {'id': 598, 'series': 18, 'job_id': 19193},
    {'id': 584, 'series': 19, 'job_id': 19103},
    {'id': 585, 'series': 19, 'job_id': 19103},
    {'id': 598, 'series': 19, 'job_id': 19193},
    {'id': 584, 'series': 20, 'job_id': 19103},
    {'id': 585, 'series': 20, 'job_id': 19103}
  ]

预期产量

  [
    {'id': 590, 'series': 17, 'job_id': 19103},
    {'id': 597, 'series': 18, 'job_id': 19103},
    {'id': 584, 'series': 19, 'job_id': 19103},
    {'id': 584, 'series': 20, 'job_id': 19103},
  ]

在这个python字典中,如何根据系列获得唯一的数据??

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30646
 
1536 次点击  
文章 [ 2 ]  |  最新文章 6 年前
Mauro Baraldi
Reply   •   1 楼
Mauro Baraldi    6 年前

遍历列表并将找到的每个第一个项添加到空列表中。

若要检查该值是否已找到,请将迭代中的当前项与查找列表进行比较。

uniq = []
found = []

for item in list_of_dictionaries:
    if item['series'] not in found:
        found.append(item['series'])
        uniq.append(item)

print(uniq)

关于这种方法的一些注意事项:

  • 它忽略了其他数据(键)。
  • 它正在获取列表的第一个匹配项。
vash_the_stampede
Reply   •   2 楼
vash_the_stampede    6 年前

这将为您生成独特的词典,但不清楚 id 你想从每一个都没有提到你是如何决定第二选择的。

d2 = {i['series']: i for i in d}
d3 = list(d2.values())
[{'id': 590, 'series': 17, 'job_id': 19103}, {'id': 598, 'series': 18,
'job_id': 19193}, {'id': 598, 'series': 19, 'job_id': 19193}, {'id':
585, 'series': 20, 'job_id': 19103}]