Mam problem z uzyskaniem najwyższej wartości w dynamicznej liście list krotek.
Lista może wyglądać następująco:Maksymalna wartość na liście list Tuple
adymlist = [[('name1',1)],[('name2',2),('name3',1), ...('name10', 20)], ...,[('name m',int),..]]
teraz pętlę poprzez listy, aby uzyskać najwyższą jakość (całkowity):
total = {}
y=0
while y < len(adymlist):
if len(adymlist) == 1:
#has the List only 1 Element -> save it in total
total[adymlist[y][0][0]] = adymlist[y][0][1]
y += 1
else:
# here is the problem
# iterate through each lists to get the highest Value
# and you dont know how long this list can be
# safe the highest Value in total f.e. total = {'name1':1,'name10':20, ..}
Próbowałem wiele, aby uzyskać maksymalną wartość, ale znalazłem bez wniosku o mój problem. Wiem, że muszę przechodzić przez każdy Tuple na liście i porównywać go z następnym, ale nie wiem, jak to zakodować.
Mogę również użyć funkcji max()
, ale nie działa z ciągami i liczbami całkowitymi. f.e. a = [ ('a',5),('z',1)]
-> wynikiem jest max(a) ---> ('z',1)
obv 5> 1, ale z> a więc próbowałem rozszerzyć funkcję max z max(a, key=int)
, ale pojawia się błąd typu.
Spodziewać się można zrozumieć, co chcę ;-)
UPDATE
Dzięki tej pory.Jeśli użyć itertools.chain(*adymlist)
i max(flatlist, key=lambda x: x[1])
będę się wyjątek jak: max_word = max (flatlist, klucz = N x: x [1]) Błąd typu: 'int' obiekt jest unsubscriptable
ale jeśli użyj itertools.chain(adymlist)
działa dobrze. Ale nie wiem, jak podsumować wszystkie liczby całkowite z każdej krotki listy. Potrzebuję twojej pomocy, aby to zrozumieć.
W przeciwnym razie napisałem obejście dla itertools.chain(*adymlist)
, aby uzyskać sumę wszystkich liczb całkowitych i najwyższą liczbę całkowitą na tej liście.
chain = itertools.chain(*adymlist)
flatlist = list(chain)
# flatlist = string, integer, string, integer, ...
max_count = max(flatlist[1:len(flatlist):2])
total_count = sum(flatlist[1:len(flatlist):2])
# index of highest integer
idx = flatlist.index(next((n for n in flatlist if n == max_count)))
max_keyword = flatlist[idx-1]
Nadal robi to, co chcę, ale czy nie jest brudny?