我需要从字典列表中生成 2 个列表,例如 {'key1': 'val1', 'key2': 'val2', ...}。 函数式风格(但 2 遍):
list_key1 = map(itemgetter('key1'), any_list)
list_key2 = map(itemgetter('key2'), any_list)
通常风格(1 遍):
list_key1, list_key2 = [], []
for i in any_list:
list_key1.append(i['key1'])
list_key2.append(i['key2'])
有没有办法以功能风格和 1 次通过来做到这一点?
请您参考如下方法:
您可以将多个键传递给 itemgetter,zip 映射输出,然后将其解压缩为两个元组:
list_key1, list_key2 = zip(*map(itemgetter('key1', 'key2'), any_list))
如果您希望输出为两个列表,您可以将它们映射到列表构造函数:
list_key1, list_key2 = map(list, zip(*map(itemgetter('key1', 'key2'), any_list)))
