在字典中映射2个值

2024-09-28 03:18:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典列表“list_dict

输入:

list_dict=[{'a':'a' ,'b':'b','c':'lala'},{'a':'a1','b':'b1','c':'lala1'}]

我需要这样一个输出-所有对应于键“a”的值和对应于键“b”的值都映射到一个列表中

 l1=['a-b','a1-b1']

这就是我到目前为止所做的,如果字典中没有键“a”,它就不应该抛出并出错。把它当作空的继续。你知道吗

l1=[element['a'] for element in list_dict if 'a' in element]

问题: 有人能帮我得到想要的结果吗? 如何使用lambda呢?你知道吗


Tags: lambdainl1列表forif字典a1
3条回答

如果键不存在,则要使用dictget方法来阻止KeyError

l1 = ['{}-{}'.format(element.get('a'), element.get('b')) for element in list_dict]

使用此输入:

list_dict = [
    {'a':'a' ,'b':'b','c':'lala'},
    {'a':'a1','b':'b1','c':'lala1'},
    {'b':'b'}
]

结果是:

['a-b', 'a1-b1', 'None-b']

或者,在阅读完你的问题后,你可能会问这样的问题:

l1 = ['{}-{}'.format(element['a'], element['b'])
    for element in list_dict if 'a' in element and 'b' in element]

结果是:

['a-b', 'a1-b1']

使用相同的输入。你知道吗

列表理解:

l = [{'a':'a' ,'b':'b','c':'lala'},{'a':'a1','b':'b1','c':'lala1'}]
res = ['-'.join(v for k,v in d.items() if k in ('a','b')) for d in l]

print(res)

输出:

['a-b', 'a1-b1']

下面是一个按要求使用lambda的解决方案

map(lambda x: '-'.join([x.get('a'), x.get('b')]), list_dict)

['a-b', 'a1-b1']

相关问题 更多 >

    热门问题