Skip to content Skip to sidebar Skip to footer

Python Convert List To Dict With Multiple Key Value

I have a list something like below and want to convert it to dict my_list = ['key1=value1', 'key2=value2', 'key3=value3-1', 'value3-2', 'value3-3', 'key4=value4', 'key5=value5', 'v

Solution 1:

Here's a possible solution:

from collections import defaultdict
import pprint

my_list = ['key1=value1', 'key2=value2', 'key3=value3-1', 'value3-2',
           'value3-3', 'key4=value4', 'key5=value5', 'value5-1', 'value5-2', 'key6=value6']

my_dict = defaultdict(list)
current_key = Nonefor item in my_list:
    if'='in item:
        current_key, value = item.split('=')

    my_dict[current_key].append(value)

my_dict = {k: v[0] iflen(v) == 1else v for k, v in my_dict.iteritems()}

pprint.pprint(my_dict)

Out of curiosity, if your input was a dictionary, getting a list would be trivial:

from collections import defaultdict

my_dict = {
    'key1': 'value1',
    'key2': 'value2',
    'key3': ['value3-1', 'value3-2', 'value3-3'],
    'key4': 'value4',
    'key5': ['value5', 'value5-1', 'value5-2'],
    'key6': 'value6'
}

output = ["{0}={1}".format(k, ', '.join(v) iftype(v) islistelse v)
          for k, v in my_dict.iteritems()]
print output

Solution 2:

Several ways to do this, this is one: EDIT: my first solution gave a list for every value, but you only require a list when there is more than one value for a key.

my_list = ['key1=value1', 'key2=value2', 'key3=value3-1', 'value3-2', 'value3-3', 'key4=value4', 'key5=value5', 'value5-1', 'value5-2', 'key6=value6']

my_dict = {}
current_key = Nonefor item in my_list:
    if'='in item:
        current_key, value = item.split('=')
        # This puts a string as the value
        my_dict[current_key] = value  
    else:
        # Check if the value is already a listifnotisinstance(my_dict[current_key], list):
            # If value is not a list, create one
            my_dict[current_key] = [my_dict[current_key]]

        my_dict[current_key].append(item)

import pprint
pprint.pprint(my_dict)

Gives:

{'key1': 'value1',
 'key2': 'value2',
 'key3': ['value3-1', 'value3-2', 'value3-3'],
 'key4': 'value4',  
 'key5': ['value5', 'value5-1', 'value5-2'],
 'key6': 'value6'}

You might wish to make it more robust by checking if current_key is None. I'll leave that to you.

Post a Comment for "Python Convert List To Dict With Multiple Key Value"