-2
students=[['Ash',85.25],['Kai',85.25],['Ray',75],['Jay',55.5]]
output:Ash
Kai
我試圖解決一個任務,我在python.I是新我沒有得到什麼,我想任何人都可以解釋我如何能夠做到這一點打印無論是從嵌套列表中的重複值名稱
students=[['Ash',85.25],['Kai',85.25],['Ray',75],['Jay',55.5]]
output:Ash
Kai
我試圖解決一個任務,我在python.I是新我沒有得到什麼,我想任何人都可以解釋我如何能夠做到這一點打印無論是從嵌套列表中的重複值名稱
一種選擇將是集團的價值觀爲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']
我會做這樣的:
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
中抓取一個對象。例如,在第一次迭代中,對象是及其['Ash', 85.25]
。students[:i] + students[i + 1:]
創造一個又一個在內存中包含除[1]
指數新創建的列表中的任何項目價值與相同。如果是的話,我將i_x[0]
的值附加到第三個包含結果的列表中。students
列表中。誰能提供上述列表理解?
它不是O(n^2)(n平方)的複雜度嗎?謝謝。 – alecxe
@alecxe我不明白爲什麼這樣:'print([x [0] for y in(students [:i] + students [i + 1:])for i,x in enumerate(students)if x [1] == y [1]])'不起作用.. –