Python 包含1和2个可数元素的列表的字典理解

Python 包含1和2个可数元素的列表的字典理解,python,python-3.x,dictionary-comprehension,Python,Python 3.x,Dictionary Comprehension,我正在努力学习/理解词典理解,并有以下列表: my_list = [ ['sam', '99912222'], ['tom', '11122222'], ['harry', '12299933'], ['sam'], ['edward'], ['harry'] ] 此列表包含具有1和2个iterables、名称和数字的元素 使用字典理解,如何创建以下字典 dic1 = {'sam':'

我正在努力学习/理解词典理解,并有以下列表:

my_list = [ ['sam', '99912222'], 
          ['tom', '11122222'], 
          ['harry', '12299933'], 
          ['sam'], 
          ['edward'], 
          ['harry'] ]
此列表包含具有1和2个iterables、名称和数字的元素

使用字典理解,如何创建以下字典

dic1 = {'sam':'99912222',
        'tom':'11122222',
        'harry' :'12299933',
        'sam':'',
        'edward':'',
        'harry':''}

dic2 = {'sam':'99912222',
        'tom':'11122222',
        'harry' :'12299933'}
如果列表仅包含包含两个元素的iterables,则这将起作用:

dic_all_iterables = {k:v for k,v in my_list}
我尝试过以下变体,但运气不佳:

dic2 = {k:v for k,v in my_list if not v is None}
#and
dic2 = {k:(v if not v is not none else '') for k,v in my_list}
#and
dic2 = {k:v for k,v in my_list if len(x)>1 in x for my_list}
但我似乎不知道正确的语法。帮助?

快到了:

dic2 = {x[0]:x[1] for x in my_list if len(x) == 2}
对于dict1,不可能有一个包含重复键的字典。

几乎没有:

dic2 = {x[0]:x[1] for x in my_list if len(x) == 2}

对于dic1,不可能有重复键的字典。

类似于dic1的东西:

from collections import defaultdict

d = defaultdict(list)

for lst in my_list:
    try:
        k, v = l
    except ValueError:
        k, = l
        v = ""
    finally:
        d[k].append(v)

print(d)
输出:

defaultdict(list,
            {'sam': ['99912222', ''],
             'tom': ['11122222'],
             'harry': ['12299933', ''],
             'edward': ['']})

有些类似于dic1:

from collections import defaultdict

d = defaultdict(list)

for lst in my_list:
    try:
        k, v = l
    except ValueError:
        k, = l
        v = ""
    finally:
        d[k].append(v)

print(d)
输出:

defaultdict(list,
            {'sam': ['99912222', ''],
             'tom': ['11122222'],
             'harry': ['12299933', ''],
             'edward': ['']})

对于dic1你不能有两把相同的钥匙萨姆和哈里。对于dic1你不能有两把相同的钥匙萨姆和哈里。谢谢!如果我理解正确,那么不可能只将名称添加到字典中而不添加值?@Doons您可以使用默认值添加它,但迭代中的最后一个将是有效的。谢谢!如果我理解正确,那么不可能只将名称添加到字典中而不添加值?@Doons您可以使用默认值添加它,但迭代中的最后一个将是有效的。谢谢!它可以处理重复的密钥!但这不是字典理解的用法,所以我会记下来供以后使用谢谢!它可以处理重复的密钥!但这不是字典理解的用法,所以我会记下来供以后使用