students=[['Ash',85.25],['Kai',85.25],['Ray',75],['Jay',55.5]]
output:Ash
Kai
我试图解决一项任务而且我是python的新手。我没有得到我想要的任何人都可以解释我怎么做的
答案 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
说明:
students
中抓取一个对象。例如,对象在第一次迭代时为i_x
及其['Ash', 85.25]
。students[:i] + students[i + 1:]
切片以在内存中创建另一个包含除i_x
之外的原始元素的所有元素[1]
具有相同i_x
索引值的项目。如果是,我将i_x[0]
值附加到保存结果的第三个列表。students
列表中最初的元素执行此操作。有人能为上述提供列表理解吗?