比较(几个)元组的Python列表

问题描述:

我们! 我一直在尝试编写一个Python-3程序,用于比较元组列表中的键是否出现三次以上。比较(几个)元组的Python列表

这里是我的列表的例子:以上

my_list = [('Configs', 98602471), 
    ('Linux_Server', 10137300), 
    ('Job-1', 10137300), 
    ('Job-2', 10137300), 
    ('Job-3', 10137300), 
    ('Catalog', 10256456), 
    ('Configs', 98602471), 
    ('Linux_Server', 100), 
    ('Job-1', 101), 
    ('Job-2', 102), 
    ('Job-3', 103), 
    ('Catalog', 10277555), 
    ('Configs', 98602471), 
    ('Linux_Server', 100), 
    ('Job-1', 104), 
    ('Job-2', 105), 
    ('Job-3', 106), 
    ('Catalog', 10297994)] 

名单代表Baculas的作业的名称和作业的大小(以字节为单位)。

这里是我的尝试:

from collections import defaultdict 

d = defaultdict(list) 
for k, v in my_list: 
    d[k].append(v) 

for key, d in d.items(): 
    print(key, d) 

这是结果:

Job-3 [10137300, 103, 106] 

Job-1 [10137300, 101, 104] 

Catalog [10256456, 10277555, 10297994] 

Configs [98602471, 98602471, 98602471] 

Linux_Server [10137300, 100, 100] 

Job-2 [10137300, 102, 105] 

我需要的结果显示我只有工作(或作业)将他们的尺寸是相同的三次以上。 例如,在这种情况下,我需要的是只打印了我下面的:

Configs [98602471, 98602471, 98602471] 

正如你可以在上面看到,这项工作“CONFIGS”的大小()是至少三次相同。

我现在没有,如果我让自己清楚。

我该怎么做?

谢谢!

你真的想要做的是在你的列表中计数。您可以使用Counter对象来完成该操作,然后查看其键以查找任何数量不小于3的项目。

my_list = [('Configs', 98602471), 
    ('Linux_Server', 10137300), 
    ('Job-1', 10137300), 
    ('Job-2', 10137300), 
    ('Job-3', 10137300), 
    ('Catalog', 10256456), 
    ('Configs', 98602471), 
    ('Linux_Server', 100), 
    ('Job-1', 101), 
    ('Job-2', 102), 
    ('Job-3', 103), 
    ('Catalog', 10277555), 
    ('Configs', 98602471), 
    ('Linux_Server', 100), 
    ('Job-1', 104), 
    ('Job-2', 105), 
    ('Job-3', 106), 
    ('Catalog', 10297994)] 

from collections import Counter 

counts = Counter(my_list) 

for count in counts: 
    if counts[count]>=3: 
     print (count, counts[count]) 

结果:

('Configs', 98602471) 3 
+0

是的!谢谢比尔贝尔。 就是这样! –

+0

不客气,弗拉维奥。 –

假设有可能重构:

for key, d in d.items(): 
    print(key, d) 

for key, d in d.items(): 
    if len(set(d)) + 1 < len(d): 
     print(key, d) 

显然,这是对的情况下解决方案时只有一个中的元素列表重复多于三次,并且当几个元素几次相同时它将不能正常工作:

[22, 22, 11, 11] # not appropriate list view