[SOLVED] Re: Compare zip lists where order is important
Sayth Renshaw
flebber.crue at gmail.com
Thu Aug 29 00:25:35 EDT 2019
On Thursday, 29 August 2019 14:03:44 UTC+10, Sayth Renshaw wrote:
> On Thursday, 29 August 2019 13:53:43 UTC+10, Sayth Renshaw wrote:
> > On Thursday, 29 August 2019 13:25:01 UTC+10, Sayth Renshaw wrote:
> > > Hi
> > >
> > > Trying to find whats changed in this example. Based around work and team reschuffles.
> > >
> > > So first I created my current teams and then my shuffled teams.
> > >
> > > people = ["Tim","Bill","Sally","Ally","Fred","Fredricka"]
> > > team_number = [1,1,2,2,3,3]
> > >
> > > shuffle_people = ["Fredricka","Bill","Sally","Tim","Ally","Fred"]
> > > shuffle_team_number = [1,1,2,2,3,3]
> > >
> > > Then combine.
> > >
> > > teams = list(zip(people,team_number))
> > > shuffle_teams = list(zip(shuffle_people, shuffle_team_number))
> > >
> > > Then I am attempting to compare for change.
> > >
> > > [i for i, j in zip(teams, shuffle_teams) if i != j]
> > >
> > > #Result
> > > [('Tim', 1), ('Ally', 2), ('Fred', 3), ('Fredricka', 3)]
> > >
> > > #Expecting to see
> > >
> > > [('Fredricka', 1),('Tim', 2)]
> > >
> > > What's a working way to go about this?
> > >
> > > Sayth
> >
> > It looks like Tuples are comparing by position changes not content changes.
> >
> > So this fails too
> >
> > set(shuffle_teams) & set(teams)
> > # {('Bill', 1), ('Fred', 3), ('Sally', 2)}
>
> Well this works although its not clear which line is the change.
>
> set(teams).symmetric_difference(set(shuffle_teams))
>
> {('Ally', 2),
> ('Ally', 3), # This is the change Ally changed from 2 to 3
> ('Fredricka', 1), # However here this first line is the change.
> ('Fredricka', 3),
> ('Tim', 1),
> ('Tim', 2)}
>
> Hints?
set(shuffle_teams).difference(set(teams))
{('Ally', 3), ('Fredricka', 1), ('Tim', 2)}
Sayth
More information about the Python-list
mailing list