从嵌套列表中打印重复值名称

时间:2016-07-14 14:29:59

标签: python python-2.7 python-3.x

students=[['Ash',85.25],['Kai',85.25],['Ray',75],['Jay',55.5]]

output:Ash
       Kai

我试图解决一项任务而且我是python的新手。我没有得到我想要的任何人都可以解释我怎么做的

2 个答案:

答案 0 :(得分:0)

一种选择是将值分组为defaultdict(list)

>>> from collections import defaultdict
>>>
>>> students = [['Ash',85.25],['Kai',85.25],['Ray',75],['Jay',55.5]]
>>> d = defaultdict(list)
>>> for value, key in students:
...     d[key].append(value)
... 
>>> for value in d.itervalues():
...     if len(value) > 1:
...         print(value)
... 
['Ash', 'Kai']

答案 1 :(得分:0)

我会这样做:

students = [['Ash', 85.25], ['Kai', 85.25], ['Ray', 75], ['Jay', 55.5]]

common_names = []
for i, i_x in enumerate(students):
    for i_y in students[:i] + students[i + 1:]:
        if i_x[1] == i_y[1]:
            common_names.append(i_x[0])

print(common_names)
#['Ash', 'Kai']

# or if you want it to print every entry in a single line:
print('\n'.join(x for x in common_names))
#Ash
#kai

说明:

  1. 我从原始列表students中抓取一个对象。例如,对象在第一次迭代时为i_x及其['Ash', 85.25]
  2. 然后我将列表students[:i] + students[i + 1:]切片以在内存中创建另一个包含除i_x之外的原始元素的所有元素
  3. 我检查新创建的列表中是否有与[1]具有相同i_x索引值的项目。如果是,我将i_x[0]值附加到保存结果的第三个列表。
  4. 我为students列表中最初的元素执行此操作。
  5. 有人能为上述提供列表理解吗?