相关疑难解决方法(0)

如何在保留订单的同时从列表中删除重复项?

是否有内置功能可以从Python中的列表中删除重复项,同时保留顺序?我知道我可以使用一个集来删除重复项,但这会破坏原始顺序.我也知道我可以像这样滚动自己:

def uniq(input):
  output = []
  for x in input:
    if x not in output:
      output.append(x)
  return output
Run Code Online (Sandbox Code Playgroud)

(感谢您放松代码示例.)

但是如果可能的话,我想利用内置或更多的Pythonic习语.

相关问题:在Python中,从列表中删除重复项的最快算法是什么,以便所有元素在保留顺序的同时是唯一的?

python list unique duplicates

722
推荐指数
12
解决办法
52万
查看次数

python从列表中删除重复的字典

我有一个词典列表

l = [
{'firstname': 'joe', 'surname': 'bloggs'},
{'firstname': 'john', 'surname': 'smith'},
{'firstname': 'joe', 'surname': 'bloggs'},
{'firstname': 'jane', 'surname': 'bloggs'}
]
Run Code Online (Sandbox Code Playgroud)

我如何删除重复,即{'firstname': 'joe', 'surname': 'bloggs'}出现两次所以会希望它只出现一次?

python

29
推荐指数
2
解决办法
2万
查看次数

我是否通过这种重复数据删除功能重新发明了轮子?

我正在寻找一种set()类似于重复删除列表的方法,除了原始列表中的项目不可清除(它们是dicts).

我花了一段时间寻找足够的东西,最后我写了这个小功能:

def deduplicate_list(lst, key):
    output = []
    keys = []
    for i in lst:
        if not i[key] in keys:
            output.append(i)
            keys.append(i[key])

    return output
Run Code Online (Sandbox Code Playgroud)

如果a key是正确给出的并且是a string,则此函数可以很好地完成其工作.毋庸置疑,如果我了解一个允许相同功能的内置或标准库模块,我很乐意放弃我的小程序,转而采用更标准,更健壮的选择.

你知道这样的实施吗?

- 注意

从这个答案找到以下单行,

[dict(t) for t in set([tuple(d.items()) for d in l])]
Run Code Online (Sandbox Code Playgroud)

聪明,不会工作,因为我必须使用项目作为嵌套dicts.

- 例子

为清楚起见,以下是使用此类例程的示例:

with_duplicates = [
    {
        "type": "users",
        "attributes": {
            "first-name": "John",
            "email": "john.smith@gmail.com",
            "last-name": "Smith",
            "handle": "jsmith"
        },
        "id": "1234"
    },
    {
        "type": "users",
        "attributes": {
            "first-name": "John", …
Run Code Online (Sandbox Code Playgroud)

python duplicates python-3.x

8
推荐指数
1
解决办法
373
查看次数

如何从字典列表中删除重复的字典对象

我想从字典列表中删除重复的字典对象.我不希望dict元素与列表中的另一个dict元素具有相同的'plate'元素.我只想要一次.

datalist = [

{
    'plate': "01",
    'confidence' : "80"
},

{
    'plate': "01",
    'confidence' : "60"
},

{
    'plate': "02",
    'confidence' : "91"
},

{
    'plate': "02",
    'confidence' : "91"
},
]
Run Code Online (Sandbox Code Playgroud)

我的输出应该是这样的:

datalist = [

{
    'plate': "01",
    'confidence' : "80"
},

{
    'plate': "02",
    'confidence' : "91"
},
]
Run Code Online (Sandbox Code Playgroud)

这是我的代码,但我没有得到确切的结果.

def filter(datalist):
    previous = ""
    for data in datalist:
        current  = data['plate']
        if current is previous:
            datalist.remove(data)
        previous = current 

    return datalist

datalist = [

    {
        'plate': …
Run Code Online (Sandbox Code Playgroud)

python dictionary list

6
推荐指数
1
解决办法
108
查看次数

如何删除列表中的重复dict,忽略dict键?

我有一个词典列表.每个字典都有几个键值,以及一个任意(但很重要)的键值对.例如

thelist = [
    {"key" : "value1", "k2" : "va1", "ignore_key" : "arb1"}, 
    {"key" : "value2", "k2" : "va2", "ignore_key" : "arb11"},
    {"key" : "value2", "k2" : "va2", "ignore_key" : "arb113"}
]
Run Code Online (Sandbox Code Playgroud)

我想删除重复的字典,以便只忽略非"ignore-key"值.我已经看到了一个相关的问题 - 但它只考虑完全相同的词汇.有没有办法删除几乎重复,以便上面的数据成为

thelist = [
    {"key" : "value1", "k2" : "va1", "ignore_key" : "arb1"}, 
    {"key" : "value2", "k2" : "va2", "ignore_key" : "arb11"}
]
Run Code Online (Sandbox Code Playgroud)

忽略哪个副本无关紧要.我怎样才能做到这一点?

python python-2.7

4
推荐指数
1
解决办法
921
查看次数

从字典列表中删除重复项(具有唯一值)

我有一个字典列表,每个字典都描述了一个文件(文件格式、文件名、文件大小……以及文件的完整路径 [始终唯一])。目标是排除描述同一文件副本的所有词典(我只想要每个文件一个词典(条目),无论有多少副本。

换句话说:如果 2 个(或更多)dicts 仅在一个键(即 path)中不同 - 只留下其中一个)。

例如,这里是源列表:

src_list = [{'filename': 'abc', 'filetype': '.txt', ... 'path': 'C:/'},
            {'filename': 'abc', 'filetype': '.txt', ... 'path': 'C:/mydir'},
            {'filename': 'def', 'filetype': '.zip', ... 'path': 'C:/'},
            {'filename': 'def', 'filetype': '.zip', ... 'path': 'C:/mydir2'}]
Run Code Online (Sandbox Code Playgroud)

结果应如下所示:

dst_list = [{'filename': 'abc', 'filetype': '.txt', ... 'path': 'C:/'},
            {'filename': 'def', 'filetype': '.zip', ... 'path': 'C:/mydir2'}]
Run Code Online (Sandbox Code Playgroud)

python dictionary list python-2.x python-3.x

4
推荐指数
1
解决办法
2615
查看次数

从字典列表中删除重复项python

我正在尝试从以下列表中删除重复项

 distinct_cur = [{'rtc': 0, 'vf': 0, 'mtc': 0, 'doc': 'good job', 'foc': 195, 'st': 0.0, 'htc': 2, '_id': ObjectId('58e86a550a0aeff4e14ca6bb'), 'ftc': 0}, 
 {'rtc': 0, 'vf': 0, 'mtc': 0, 'doc': 'good job', 'foc': 454, 'st': 0.8, 'htc': 1, '_id': ObjectId('58e8d03958ae6d179c2b4413'), 'ftc': 1},
 {'rtc': 0, 'vf': 2, 'mtc': 1, 'doc': 'test', 'foc': 45, 'st': 0.8, 'htc': 12, '_id': ObjectId('58e8d03958ae6d180c2b4446'), 'ftc': 0}] 
Run Code Online (Sandbox Code Playgroud)

基于以下条件的字典:如果'doc'键值文本相同,则应删除其中一个字典。我尝试了以下解决方案

distinct_cur = [dict(y) for y in set(tuple(x.items()) for x in cur)] 
Run Code Online (Sandbox Code Playgroud)

但最终列表中仍存在重复项。

以下是所需的输出,如键“ doc”值的第一个和第二个distinct_cur文本相同(很好):

[{'rtc': 0, 'vf': 0, 'mtc': 0, …
Run Code Online (Sandbox Code Playgroud)

python

4
推荐指数
2
解决办法
2404
查看次数

按所有键唯一的键排序列表

用这个把头发拉出来.

我有一个字典列表,没有每个唯一条目的唯一主ID键(字典是动态构建的):

dicts = [{'firstname': 'john', 'lastname': 'doe', 'code': 'crumpets'},
         {'firstname': 'john', 'lastname': 'roe', 'code': 'roe'},
         {'firstname': 'john', 'lastname': 'doe', 'code': 'crumpets'},
         {'firstname': 'thom', 'lastname': 'doe', 'code': 'crumpets'},
]
Run Code Online (Sandbox Code Playgroud)

如何删除列表中的任何重复{}被删除的字典列表?因此,我需要检查所有三个字典键是否与列表中的另一个字典键匹配...然后从dictif if check that中丢弃该字典键.

因此,对于上面的示例,需要删除第一个和第三个"条目",因为它们是重复的.

python sorting dictionary list

2
推荐指数
1
解决办法
61
查看次数

如何从字典列表中删除重复项?

我在 python 中有一个字典列表,如下所示:

[{'category': 'software', 'name': 'irssi', 'version': '1.2.0'},
 {'category': 'software', 'name': 'irssi', 'version': '1.1.2'},
 {'category': 'software', 'name': 'hexchat', 'version': '2.14.2'}]
Run Code Online (Sandbox Code Playgroud)

(解析一些数据txt文件)

我想做什么:

如果类别和名称相同,我想保留包条目的第一次出现并删除其余部分,因此最终输出将如下所示:

[{'category': 'software', 'name': 'irssi', 'version': '1.2.0'},
{'category': 'software', 'name': 'hexchat', 'version': '2.14.2'}]
Run Code Online (Sandbox Code Playgroud)

我应该如何实现这一目标?我尝试将字典列表转换为字典,然后迭代它,dict.items()但没有运气。

python dictionary list

2
推荐指数
1
解决办法
4041
查看次数