【发布时间】:2013-09-01 02:54:30
【问题描述】:
我有一个按特定键排序的字典列表。每个字典包含 32 个元素,列表中有超过 4000 个字典。我需要代码来处理列表并返回一个删除所有重复项的新列表。
这些链接中的方法:
不要帮助我,因为字典是不可散列的。
有什么想法吗?如果您需要更多信息,请发表评论,我会添加信息。
编辑:
重复字典可以是具有相同 list[dictionary][key] 值的任意两个字典。
好的,这里给需要的人详细解释一下。
我有一个这样的字典列表:
[ {
"ID" : "0001",
"Organization" : "SolarUSA",
"Matchcode" : "SolarUSA, Something Street, Somewhere State, Whatev Zip",
"Owner" : "Timothy Black",
}, {
"ID" : "0002",
"Organization" : "SolarUSA",
"Matchcode" : "SolarUSA, Something Street, Somewhere State, Whatev Zip",
"Owner" : "Johen Wilheim",
}, {
"ID" : "0003",
"Organization" : "Zapotec",
"Matchcode" : "Zapotec, Something Street, Somewhere State, Whatev Zip",
"Owner" : "Simeon Yurrigan",
} ]
在这个列表中,第一个和第二个字典是重复的,因为它们的Matchcodes 是相同的。
现在这个列表按以下代码排序:
# sort_by is "Matchcode"
def sort( list_to_be_sorted, sort_by ):
return sorted(list_to_be_sorted, key=lambda k: k[sort_by])
所以我有一个按Matchcode 排序的字典列表。现在我只需要遍历列表,访问list[dictionary][key] 并在两个键值匹配时删除重复项。
【问题讨论】:
-
“任何与
key具有相同值的字典”是什么意思?您的意思是每个键的值都相同?key的值与您在外部指定的相同? -
看起来您将字典用作穷人的对象。 (这没有错。)这个问题可能暗示您应该为这些数据创建一个类。然后您可以定义
__eq__、__hash__以及其他适用的答案。 -
你能发布一个例子,比如说,其中三个字典,其中两个应该被认为是重复的吗?目前还不清楚字典被视为重复的标准是什么。
-
@MikeGraham:是的,在这种情况下它们将是重复的,因为键的值(在这种情况下为“3”)是相同的。
-
@Jacob-IT:这正是我们要求SSCCE 的原因。很明显,字典有 32 个键这一事实与您的问题无关;如果他们只有 3 个钥匙,那将是同样的问题,对吧?所以,给我们一个精简到 3 个字典和 3 个键的版本,它的文本比你现在拥有的要少得多,而且更清晰。
标签: python list python-2.7 dictionary duplicates