1、直接转:

要求列表中的每个元素是 长度为2的元组  或 长度为2的列表

    l1 = [(1, 'a'), (2, 'b'),
          (3, 'c'), (4, 'd')]
    print(dict(l1))
    # {1: 'a', 2: 'b', 3: 'c', 4: 'd'}

    
    l2= [['key1', 'value1'], ['key2', 'value2'], ['key3', 'value3']]
    print(dict(l2))
    # {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}

2、zip函数

要求:两个列表,分为长度相同和长度不同

    #长度相同
    l1 = [1, 2, 3, 4]
    l2 = ['a', 'b', 'c', 'd']
    print(dict(zip(l2, l1)))
    # {'a': 1, 'b': 2, 'c': 3, 'd': 4}

    
    #长度不同用ZIP
    l1 = [1, 2, 3, 4, 5, 6, 7]
    l2 = ['a', 'b', 'c', 'd']
    print(dict(zip(l2, l1)))
    # {'a': 1, 'b': 2, 'c': 3, 'd': 4}

    #长度不同用zip_longest
    from itertools import zip_longest
    l1 = [1, 2, 3, 4, 5, 6, 7]
    l2 = ['a', 'b', 'c', 'd']
    print(dict(zip_longest(l1, l2)))
    # {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: None, 6: None, 7: None}
    print(dict(zip_longest(l2, l1)))
    # {'a': 1, 'b': 2, 'c': 3, 'd': 4, None: 7}

3、用enumerate

考虑是列表元素下标Index做key还是做value;

如果做Key的话直接enumerate,如果做value的话,遍历依次写进字典; 

    #index做为key
    l1=['a','b','c','d']
    print(dict(enumerate(l1)))
    #{0: 'a', 1: 'b', 2: 'c', 3: 'd'}

    
    #index作为value,列表元素作为key
    d={}
    for index,val in enumerate(l1):
        d[val]=index
    print(d)
    #{'a': 0, 'b': 1, 'c': 2, 'd': 3}

 4、字典扩展式

将列表元素转换成字典的key,value写死

l1=[1,2,3,4]
d1={k:"a" for k in l1}
print (d1)
#{1: 'a', 2: 'a', 3: 'a', 4: 'a'}

5、dict.fromkeys()

列表元素转换为字典的key,value写死

l1=['red','blue','orange']
d1=dict.fromkeys(l1,"colors")
print (d1)
#{'red': 'colors', 'blue': 'colors', 'orange': 'colors'}

 6、d.update(sub_d)

每个列表元素是字典对象

l1=[{1:'a',2:'b'},{3:'c',4:'d'}]
d1={}
for i in l1:
    d1.update(i)
 
 
print (d1)
# {1: 'a', 2: 'b', 3: 'c', 4: 'd'}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐