タプルのリストの動的リストで最高の値を取得するのに問題があります。
一覧することができますが、次のようになります。今タプルのリストの最大値
adymlist = [[('name1',1)],[('name2',2),('name3',1), ...('name10', 20)], ...,[('name m',int),..]]
Iループを一覧を通じて最高値(整数)を取得するために:私は最大値を取得するために多くのことを試みたが、私が見つけた
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, ..}
を私の問題に結論はありません。リストの各タプルをループして次のタプルと比較しなければならないが、それを正しい方法でコードする方法はわからない。
また、私は関数max()
を使用できますが、文字列と整数では機能しません。 f.e. a = [ ('a',5),('z',1)]
- >結果はmax(a) ---> ('z',1)
obv 5> 1ですが、z> aなので、max(a, key=int)
でmax関数を拡張しようとしましたが、タイプエラーが発生します。
あなたは私がこれまで;-)
UPDATE
おかげで欲しいものを理解することができます願っています。私はitertools.chain(*adymlist)
とmax(flatlist, key=lambda x: x[1])
を使用している場合は、私が得るような例外:max_word = MAX(flatlist、キー=ラムダX:X [1]) はTypeError:「int型のオブジェクトは、
けど場合unsubscriptableですitertools.chain(adymlist)
を使っても問題ありません。しかし、リストの各タプルからすべての整数を合計する方法はわかりません。私はそれを理解するためにあなたの助けが必要です。
それ以外の場合は、itertools.chain(*adymlist)
の回避策を書いて、すべての整数とそのリスト内の最も高い整数の合計を取得してください。
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]
それはまだ私が何をしたいんが、汚れていないのですか?