[SOLVED] Re: Compare zip lists where order is important

Sayth Renshaw flebber.crue at gmail.com
Thu Aug 29 19:20:46 EDT 2019


On Thursday, 29 August 2019 20:33:46 UTC+10, Peter Otten  wrote:
> Sayth Renshaw wrote:
> 
> > will find the added
> > pairs, but ignore the removed ones. Is that what you want?
> > 
> > Yes, I think. I want to find the changed pairs. The people that moved team
> > numbers.
> 
> To find the people that moved team numbers I would tear the pairs apart. 
> Like:
> 
> >>> 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]
> >>> old = dict(zip(people, team_number))
> >>> new = dict(zip(shuffle_people, shuffle_team_number))
> >>> for name in old.keys() & new.keys():
> ...     old_team = old[name]
> ...     new_team = new[name]
> ...     if old_team != new_team:
> ...         print(name, "went from", old_team, "to", new_team)
> ... 
> Tim went from 1 to 2
> Fredricka went from 3 to 1
> Ally went from 2 to 3

The reason I opted away from Dictionaries is if there was a team with people with same name. Then the keys would be the same.

So if Sally left and team 2 had one Tim move in and a new Tim start.
shuffle_people = ["Fredricka","Bill","Tim","Tim","Ally","Fred"] 
shuffle_team_number = [1,1,2,2,3,3] 

becomes 
{'Fredricka': 1, 'Bill': 1, 'Tim': 2, 'Ally': 3, 'Fred': 3}

This still appears to work but is wrong.

for name in old.keys()& new.keys():
    old_team = old[name]
    new_team = new[name]
    if old_team != new_team:
        print(name, "went from", old_team, "to", new_team)
Ally went from 2 to 3
Tim went from 1 to 2
Fredricka went from 3 to 1

But I guess in reality I would use a UID and then look up the UID in a list or database.

Cheers

Sayth



More information about the Python-list mailing list