我有一个字典列表" list_dict
"
输入:
list_dict=[{'a':'a' ,'b':'b','c':'lala'},{'a':'a1','b':'b1','c':'lala1'}]
我需要一个像这样的输出 - 所有与键对应的值' a
'和键#39; b
'对应的值映射到列表
l1=['a-b','a1-b1']
这是我到目前为止所做的事情,如果没有关键字' a
'在字典中它不应该抛出错误。只需将其视为空并继续。
l1=[element['a'] for element in list_dict if 'a' in element]
问题: 有人可以帮助我获得所需的输出吗? 如何使用lambda做到这一点?
答案 0 :(得分:3)
如果密钥不存在,您希望使用dict
的{{1}}方法阻止get
:
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]
使用相同的输入。
答案 1 :(得分:1)
以下是根据要求使用lambda
的解决方案,
map(lambda x: '-'.join([x.get('a'), x.get('b')]), list_dict)
['a-b', 'a1-b1']
答案 2 :(得分:1)
使用列表理解:
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']