如果我有一个字典,其中包含如下所示的数据,我应该执行什么过程(如if语句)来删除重复的条目,如嵌套字典1和4。假设我想删除4,因为用户输入了它,我假设人们是唯一的,所以他们不能有相同的人口统计信息,不可能有两个John R. Smiths。
people = {1: {'name': 'John R. Smith', 'age': '27', 'sex': 'Male'},
2: {'name': 'Marie', 'age': '22', 'sex': 'Female'}
3: {'name': 'Mariah', 'age': '32', 'sex': 'Female'},
4: {'name': 'John R. Smith', 'age': '27', 'sex': 'Male'}}
我只是在学习,所以如果有什么简单的东西我想不出来,我不会感到惊讶。我试图比较条目,如if ['1']['name']和['1']['sex'] ==['4']['name']和['4']['sex']:然后print ['4']只是为了测试,错误消息告诉我需要使用索引。我还成功地将其转换为一个列表,但在试图比较它们时遇到了另一个错误,例如如果person ['name']和person ['age']和person ['sex']等于四个循环中的另一行,则打印一条消息,但我一无所获。我'我也试着把它变成一个 Dataframe ,并使用pandas duplicate函数来删除昨天我得到的一些关于'dict'的错误的重复,可能是因为字典在 Dataframe 中被嵌套,与嵌套字典的列表形成对比,它看起来像这样:
[{1: {'name': 'John', 'age': '27', 'sex': 'Male'},
2: {'name': 'Marie', 'age': '22', 'sex': 'Female'}]
2条答案
按热度按时间d8tt03nd1#
您可以利用dict键总是唯一的这一事实来帮助删除重复项。由于dict是不可散列的,不能直接用作键,您可以先将每个子dict转换为一个元组项。使用
dict.setdefault
只保留每个不同键的第一个值:给定您的示例输入,此函数将输出:
演示:https://replit.com/@blhsing/LonelyNumbWatch
vpfxa7rd2#
一种方法是通过对
people
进行迭代来构建新字典,并将一个人分配给新字典(如果他们的数据是唯一的)。以下解决方案使用set
来跟踪唯一用户:输出量: