Python Forum
Dict from list - HELP! PLEASE!
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Dict from list - HELP! PLEASE!
#16
Was I understanding the problem wrong the entire time? In an early post you said this:

"If If the list has a number of key "numero" duplicated, it does not create a new dict. New dict is only available when all values of key "numero" are unique."

and this:

"yes, it return an empty dic."

I interpreted that as:

If numero is unique for each item in list
return dictionary made from list
else
return empty dictionary

Now it sounds like what you want is:

If numero is unique for each item in list
add items to existing dictionary

To do that you need to test the entire list first and only add entries if the list passes the uniqueness test.
f = [
    {"numero":"20202020","name" : "Durand", "first":"Martin", "notes":[15,15.5,8,13]},
    {"numero":"21212121","name" : "Dupond", "first":"Alain", "notes":[11,9.5,5.5,18]},
    {"numero":"28790020","name" : "Férien", "first":"Mélissa", "notes":[13,19.5,15,8]},
    {"numero":"20212021","name" : "Bosse", "first":"Mélissa", "notes":[13,19.5,15,8]},
    {"numero":"21202120","name" : "Allard", "first":"Chloé", "notes":[11,9.5,2,17]},
    {"numero":"29019022","name" : "Durand", "first":"Alan", "notes":[12,15.5,8,13]},
]
  
g = [
    {"numero":"20202020","name" : "Durand", "first":"Martin", "notes":[15,15.5,8,13]},
    {"numero":"21212121","name" : "Dupond", "first":"Alain", "notes":[11,9.5,5.5,18]},
    {"numero":"28790020","name" : "Férien", "first":"Mélissa", "notes":[13,19.5,15,8]},
    {"numero":"20212021","name" : "Bosse", "first":"Mélissa", "notes":[13,19.5,15,8]},
    {"numero":"21202120","name" : "Allard", "first":"Chloé", "notes":[11,9.5,2,17]},
    {"numero":"29019022","name" : "Durand", "first":"Alan", "notes":[12,15.5,8,13]},
    {"numero":"21212121","name" : "Dupond", "first":"Alain", "notes":[11,9.5,5.5,18]},
]

new_dict = {}
  
def add(seq):
    """Add items in seq to new_dict ONLY if every item in seq is unique"""

    # Test list for uniqueness
    for i in range(len(seq)-1):
        for j in range(i+1, len(seq)):
            if seq[i]['numero'] == seq[j]['numero']:
                print("Numero en double!\n " + "----> " + seq[i]['numero'] + " \n Fichier non utilisable!")
                return new_dict   # Return unaltered dictionary

    # seq is ok.  Add items to dictionary
    for i in seq:
        (key, value), *rest = i.items()
        new_dict[value] = dict(rest)
  
    return new_dict
  
print(add(f))
print(add(g))
Reply


Messages In This Thread
Dict from list - HELP! PLEASE! - by cherry_cherry - Apr-07-2020, 07:15 AM
RE: Dict from list - HELP! PLEASE! - by deanhystad - Apr-07-2020, 09:36 AM
RE: Dict from list - HELP! PLEASE! - by deanhystad - Apr-07-2020, 03:45 PM
RE: Dict from list - HELP! PLEASE! - by deanhystad - Apr-07-2020, 05:29 PM
RE: Dict from list - HELP! PLEASE! - by deanhystad - Apr-08-2020, 01:27 PM
RE: Dict from list - HELP! PLEASE! - by deanhystad - Apr-08-2020, 03:29 PM
RE: Dict from list - HELP! PLEASE! - by deanhystad - Apr-08-2020, 04:07 PM
RE: Dict from list - HELP! PLEASE! - by deanhystad - Apr-08-2020, 05:01 PM
RE: Dict from list - HELP! PLEASE! - by deanhystad - Apr-08-2020, 07:45 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Input validation for nested dict and sorting list of tuples ranbarr 3 4,089 May-14-2021, 07:14 AM
Last Post: perfringo
  List index out of range when turning CSV into dict ranbarr 15 6,996 May-12-2021, 10:38 AM
Last Post: ranbarr
  Python Adding +1 to a list item cointained in a dict ElReyZero 1 2,182 Apr-30-2020, 05:12 AM
Last Post: deanhystad
  maximum and minimum element from the list and return output in dict MeeranRizvi 1 3,842 Jan-02-2017, 02:12 PM
Last Post: ichabod801

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020