create dict with multiple values out of two lists. group multiple keys into one

后端 未结 4 1499
旧时难觅i
旧时难觅i 2021-01-28 23:44

I have two list:

lists = [\'a\',\'b\',\'c\',\'d\',\'e\']
keys = [18,18,3,4,5]

what I want is a dictionary like this:

{18:[\'a\',\'         


        
相关标签:
4条回答
  • 2021-01-28 23:47

    Upon reading a post suggestion from stackoverflow:

    dictionary = {k: [values[i] for i in [j for j, x in enumerate(keys) if x == k]] for k in set(keys)}
    

    I have solved it.

    0 讨论(0)
  • You can try this:

    dicts = {key: [] for key in keys}
    for k, v in zip(keys, lists):
        dicts[k].append(v)
    

    or

    from collections import defaultdict
    dicts = defaultdict(list)
    for k, v in zip(keys, lists):
        dicts[k].append(v)
    

    Output:

    {18: ['a', 'b'], 3: ['c'], 4: ['d'], 5: ['e']}
    
    0 讨论(0)
  • 2021-01-28 23:50

    Easy way is to use zip.

    dictionary = dict(zip(keys, values))
    
    0 讨论(0)
  • 2021-01-28 23:53

    You can try this:

    output = {}
    for index, key in enumerate(keys):
        if not key in output:
            output[key] = lists[index]
        else:
            cur_val = output[key]
            if type(cur_val) == str:
                cur_val = [cur_val]
            
            cur_val.append(lists[index])        
            output[key] = cur_val
    print(output)
    

    output:

    {18: ['a', 'b'], 3: 'c', 4: 'd', 5: 'e'}
    
    0 讨论(0)
提交回复
热议问题