Python 如何从列表中删除重复项并从中取出最大的重复项
我有以下python中的dict列表Python 如何从列表中删除重复项并从中取出最大的重复项,python,Python,我有以下python中的dict列表 [{'JP': ['Server2', 'Server1', 'Server3']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server1']}, {'JP': ['Server1']}, {'JP': ['Server1']}, {'JP': ['Server2', 'Server1'
[{'JP': ['Server2', 'Server1', 'Server3']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server1']}, {'JP': ['Server1']}, {'JP': ['Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}]
我想从这些中删除重复项,然后取出最大值列表。在上述情况下,我的输出将是
[{'JP': ['Server2', 'Server1', 'Server3']}]
我正在尝试删除重复项
result = [dict(t) for t in set([tuple(d.items()) for d in result])]
它给了我错误
不可损坏的类型:“list”
。有没有指向正确方向的指针?我在这里对你的字典进行假设,但如果
x = [{'JP': ['Server2', 'Server1', 'Server3']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server1']}, {'JP': ['Server1']}, {'JP': ['Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}]
x.sort(key = lambda x:len(x['JP']))
然后
x[-1]
将是您想要的
更新:
借用下面Marco Bonelli的答案,您不必对数组进行实际排序。你可以简单地找到像这样的“最大的”
max(x, key = lambda x:len(x['JP']))
我在假设你的字典,但如果
x = [{'JP': ['Server2', 'Server1', 'Server3']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server1']}, {'JP': ['Server1']}, {'JP': ['Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}]
x.sort(key = lambda x:len(x['JP']))
然后
x[-1]
将是您想要的
更新:
借用下面Marco Bonelli的答案,您不必对数组进行实际排序。你可以简单地找到像这样的“最大的”
max(x, key = lambda x:len(x['JP']))
我在假设你的字典,但如果
x = [{'JP': ['Server2', 'Server1', 'Server3']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server1']}, {'JP': ['Server1']}, {'JP': ['Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}]
x.sort(key = lambda x:len(x['JP']))
然后
x[-1]
将是您想要的
更新:
借用下面Marco Bonelli的答案,您不必对数组进行实际排序。你可以简单地找到像这样的“最大的”
max(x, key = lambda x:len(x['JP']))
我在假设你的字典,但如果
x = [{'JP': ['Server2', 'Server1', 'Server3']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server1']}, {'JP': ['Server1']}, {'JP': ['Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}, {'JP': ['Server2', 'Server1']}]
x.sort(key = lambda x:len(x['JP']))
然后
x[-1]
将是您想要的
更新:
借用下面Marco Bonelli的答案,您不必对数组进行实际排序。你可以简单地找到像这样的“最大的”
max(x, key = lambda x:len(x['JP']))
这个怎么样?易于查看其工作原理易于修改:)
这个怎么样?易于查看其工作原理易于修改:)
这个怎么样?易于查看其工作原理易于修改:)
这个怎么样?易于查看其工作原理易于修改:)
那么,在您的意义上,“最大”就是包含最多项的列表?如果上面的列表也包含
{'JP':['Server4']}
,会发生什么?最终结果中是否应该出现'Server4'
?或者你只是在寻找包含最长“JP”列表的dict?那么,在你的意义上,“最大”就是包含最多项的列表?如果上面的列表也包含{'JP':['Server4']}
,该怎么办?最终结果中是否应该出现'Server4'
?或者你只是在寻找包含最长“JP”列表的dict?那么,在你的意义上,“最大”就是包含最多项的列表?如果上面的列表也包含{'JP':['Server4']}
,该怎么办?最终结果中是否应该出现'Server4'
?或者你只是在寻找包含最长“JP”列表的dict?那么,在你的意义上,“最大”就是包含最多项的列表?如果上面的列表也包含{'JP':['Server4']}
,该怎么办?最终结果中是否应该出现'Server4'
?或者您只是在寻找包含最长“JP”列表的dict吗?我可以在那里使用x.keys()来避免硬编码“JP”x.keys()
返回所有键。除非你更清楚地说明你的问题,否则恐怕所有的解决方案都是不够的。不-这提供了一个dict\u keys
对象,不能用作索引。但是,通过将它包装在x[0]中k的中,keys():…
您应该能够做到这一点。我相信还有更好的方法,但我的大脑现在很痛。如果JP
不是常数(而是在创建dict
s时在其他地方定义的,那么从定义该键的任何地方获取它。我可以在那里使用x.keys()来避免硬编码“JP”x.keys()
返回所有键。除非您更清楚地说明您的问题,否则恐怕所有解决方案都不够。否-这提供了一个dict_keys
对象,它不能用作索引。但是,通过将其包装在中,用于x[0]中的k。keys():…
你应该能够做到。我肯定还有更好的方法,但我的大脑现在很痛。如果JP
不是一个常数(而是在创建dict
s时在别处定义的,那么从你定义该键的任何地方抓取它。我可以在那里使用x.keys()来避免硬编码“JP”x.keys()
返回所有键。除非您更清楚地说明您的问题,否则恐怕所有解决方案都不够。否-这提供了一个dict_keys
对象,它不能用作索引。但是,通过将其包装在中,用于x[0]中的k。keys():…
你应该能够做到。我肯定还有更好的方法,但我的大脑现在很痛。如果JP
不是一个常数(而是在创建dict
s时在别处定义的,那么从你定义该键的任何地方抓取它。我可以在那里使用x.keys()来避免硬编码“JP”x.keys()
返回所有键。除非您更清楚地说明您的问题,否则恐怕所有解决方案都不够。否-这提供了一个dict_keys
对象,它不能用作索引。但是,通过将其包装在中,用于x[0]中的k。keys():…
你应该能够做到。我肯定还有更好的方法,但我的大脑现在很痛。如果JP
不是一个常数(而是在创建dict
时在其他地方定义的),那么从定义该键的任何地方抓取它。