【发布时间】:2020-04-02 14:44:50
【问题描述】:
我正在尝试编写一个列表理解,以整理出不重复的字典。我正在使用的数据如下所示:
[
{
'username': 'food_lovers_mad',
'data': (some unique data)
},
{
'username': 'oceanarmor',
'data': (some unique data)
},
{
'username': 'freediverlife',
'data': (some unique data)
}
]
我正在整理具有相同用户名的词典并将它们添加到新列表中。这是我目前的做法:
duplicates = [dup for outer in array for dup in
[inner for inner in array
if outer['username'] == inner['username']]]
编辑:输入的一个例子可能是:
[
{
'username': 'duplicate',
'data': {
"watches": 1241,
"followers": 71234
}
},
{
'username': 'duplicate',
'data': {
"watches": 12431,
"followers": 151
}
},
{
'username': 'not duplicate',
'data': {
"watches": 2124,
"followers": 54124
}
}
]
这会产生输出:
[
{
'username': 'duplicate',
'data': {
"watches": 1241,
"followers": 71234
}
},
{
'username': 'not duplicate',
'data': {
"watches": 2124,
"followers": 54124
}
}
]
我真的很困惑,因为我对 python 中的列表理解有点陌生,所以我将不胜感激!
【问题讨论】:
-
设置自动删除重复项。
uniques = list(set(original_list)) -
你能举一个重复的例子和相同的预期输出吗?
-
你能提供预期的输出吗?
-
看看
itertools.groupby。您当前的方法需要 O(n**2) 时间;排序和分组只需要 O(n lg n) 时间。 -
@JohnGordon 每个字典中提供的数据都是唯一的,所以这行不通?
标签: python python-3.x dictionary list-comprehension