On 11/11/2022 7:50 AM, Stefan Ram wrote:
Pancho <pancho.jo...@proton.me> writes:
def build_max_dict( tups):
dict = {}
for (a,b) in tups:
if (a in dict):
if (b>dict[a]):
dict[a]=b
else:
dict[a]=b
return(sorted(dict.values()))
Or,
import itertools
import operator
def build_max_dict( tups ):
key = operator.itemgetter( 0 )
groups = itertools.groupby( sorted( tups, key=key ), key )
return set( map( lambda x: max( x[ 1 ])[ 1 ], groups ))
FYI, neither of those solutions work:
Pancho: 11, 12, 41
You : 41, 11, 12
The answer I'm looking for is 11,41,12
Maybe a tuple with the same info presented differently would be easier
to tackle:
orig:
[(0, 11), (1, 1), (2, 1),
(0, 1), (1, 41), (2, 2),
(0, 9), (1, 3), (2, 12)]
new: [(11,1,1),
(1,41,2),
(9,3,12)]
I'm still looking for the max value in each position across all elements
of the tuple, so the answer is still 11,41,12.
Edit: found a solution online:
-----------------------------------------------------------------
x = [(11,1,1),(1,41,2),(9,3,12)]
maxvals = [0]*len(x[0])
for e in x:
maxvals = [max(w,int(c)) for w,c in zip(maxvals,e)]
print(maxvals)
[11,41,12]
-----------------------------------------------------------------
So now the challenge is making it a one-liner!
Thanks
--
https://mail.python.org/mailman/listinfo/python-list