假设我有字典:
my_dict = [
{'first': 'James', 'middle': 'Smith', 'last': 'Joule'},
{'first': 'James', 'middle': 'smith', 'last': 'joule'},
{'first': 'Christian', 'middle': 'Edward', 'last': 'Doppler'},
{'first': 'Robert', 'middle': 'Edward', 'last': 'Antonio'},
{'first': 'Robert', 'middle': 'edward', 'last': 'antonio'},
{'first': 'Robert', 'middle': 'edwrd', 'last': 'Antonio'},
{'first': 'James', 'middle': 'Jackson', 'last': 'harden'},
{'first': 'James', 'middle': 'jackson', 'last': 'Harden'},
]
我有一个叫做钥匙的清单:
keys = ["first", "last"]
我想根据键中的每个值过滤myDict,这将导致
filtered_dict = [
{'first': 'James', 'middle': 'Smith', 'last': 'Joule'},
{'first': 'Christian', 'middle': 'Edward', 'last': 'Doppler'},
{'first': 'Robert', 'middle': 'Edward', 'last': 'Antonio'},
{'first': 'James', 'middle': 'Jackson', 'last': 'harden'}
]
正如您在myu dict list的列表字典中所观察到的,重复的dict值会从列表中删除或过滤掉,并且只有该dict实例的第一个条目会被带到过滤后的输出中。你知道吗
如果两个键的值相同,我需要删除重复项。你知道吗
用Python理解字典/列表有没有一种简单的方法?有没有其他更快的方法来实现这一点?你知道吗
您可以通过使用
key
的(x["first"].lower, x["last"].lower())
按分组,然后只取分组值的第0个元素:输出:
警告:
Groupby只适用于连续键-如果在列表末尾有第三个
{'first': 'James', 'middle': 'Smith', 'last': 'JOUle'}
,他会得到它自己的条目:如果您希望所有列表都在同一个组中,则需要先对列表进行排序,然后依次进行分组。你知道吗
下面的解决方案不需要任何import语句,并且能够区分大小写。它还只考虑键列表中提供的字段,并在匹配时忽略所有其他字段(the solution provided by Mstaino在匹配时考虑所有字段,而不管键列表中可能有什么)。你知道吗
如果只想消除连续的重复(如the solution provided by Patrick Artner),则必须按以下方式声明
filtered_dict
:相关问题 更多 >
编程相关推荐