Gå til innhold

Anbefalte innlegg

Skrevet

Hei

 

Skal sortere en liste som inneholder sublister. Det skal sorteres på lengden av sublistene, dvs. at listen [[1,2,3],[4,5],[1]] skal bli til [[1],[4,5],[1,2,3]].

Det skal helst være en effektiv sortering.

 

Noen som har tid til å hjelpe?

Videoannonse
Annonse
Skrevet

Dette ser ut til å funke. Har ikke tid til å måle effektivitet. Hvis jeg skjønner deg rett skal rekkefølgen i sublistene forbli urørt(?)

 

alist = [[1,2,3],[6,5,3,2], [4,5,3], [1], [6,1]] 
print sorted(alist, key=lambda s: len(s))

Skrevet

Mitt script:

def sort(list, do=False):
	nlen = {}
	i = 0
	for x in list:
			if not len(list[x]) in nlen:
					nlen[len(list[x])] = {}
			nlen[len(list[x])][x] = list[x]
	if do:
			plist = {}
			for x in nlen:
					for y in nlen[x]:
							plist[y] = nlen[x][y]
	else:
			plist = nlen
	return plist

a = {}
a['b'] = ['a', 'b', 'c']
a['c'] =['d', 'e']
a['a'] = ['f']

print sort(a)

Ble aldri ferdig med det, så do=True virker ikke.

Gjest
Dette emnet er stengt for flere svar.
×
×
  • Opprett ny...