如何在Python中将dict中的一些值转换为干净样式的列表?

如何在Python中将dict中的一些值转换为干净样式的列表?,python,list,dictionary,iteration,Python,List,Dictionary,Iteration,我的代码如下所示,只是想知道是否有更好的方法在Python中实现它 d[k]是一个dict,item是一个列表 如果键不存在,则使用返回默认值: item.append(d[k].get('v1', '')) 这里,d[k].get'v1',如果字典中存在与'v1'相关的值,则返回该值,否则返回 将其与loop and list.extend结合使用,您可以在一行中将所有这些键添加到列表中: item.extend(d[k].get(key, '') for key in ('v1', 'v2

我的代码如下所示,只是想知道是否有更好的方法在Python中实现它

d[k]是一个dict,item是一个列表

如果键不存在,则使用返回默认值:

item.append(d[k].get('v1', ''))
这里,d[k].get'v1',如果字典中存在与'v1'相关的值,则返回该值,否则返回

将其与loop and list.extend结合使用,您可以在一行中将所有这些键添加到列表中:

item.extend(d[k].get(key, '') for key in ('v1', 'v2', 'e', 'x'))
如果键不存在,则使用返回默认值:

item.append(d[k].get('v1', ''))
这里,d[k].get'v1',如果字典中存在与'v1'相关的值,则返回该值,否则返回

将其与loop and list.extend结合使用,您可以在一行中将所有这些键添加到列表中:

item.extend(d[k].get(key, '') for key in ('v1', 'v2', 'e', 'x'))
你可以做:

item.extend([d[k].get(key, '') for key in ['v1', 'v2', 'e', 'x']])
这将创建一个包含值的列表,并使用获得的值扩展列表项

这将使用d[k].getkey,默认值,当在d[k]中找不到键时,它将使用默认值。

您可以执行以下操作:

item.extend([d[k].get(key, '') for key in ['v1', 'v2', 'e', 'x']])
这将创建一个包含值的列表,并使用获得的值扩展列表项

这使用了d[k].getkey,default,当在d[k]中找不到键时,它将使用default。

类似这样的东西吗

[d[k].get(i,'') for i in ('v1', 'v2', 'e', 'x')]
像这样的

[d[k].get(i,'') for i in ('v1', 'v2', 'e', 'x')]

这里不需要使用列表理解;生成器表达式为Python省去了创建中间列表的麻烦和费用,扩展后该列表将被丢弃;生成器表达式为Python节省了创建中间列表的麻烦和费用,该列表在扩展后将被丢弃。项是否以空列表开始?项是否以空列表开始?这将创建一个新列表,而不是扩展现有列表。@MartijnPieters我可以理解您的观点。谢谢你指出。我只是假设他创建的列表就是为了这个目的。他甚至没有解释他是否需要比元组中的键更多的键。@MartijnPieters使用original_-list+=或original_-list.extend扩展列表并不难。@F3AR3DLEGEND:确实如此,但这要么需要显式化,要么OP需要显示不需要扩展。这会创建一个新列表,不扩展现有的。@MartijnPieters我明白你的意思。谢谢你指出。我只是假设他创建的列表就是为了这个目的。他甚至没有解释他是否需要比元组中的键更多的键。@MartijnPieters使用original_list+=或original_list.extend扩展列表并不难。@F3AR3DLEGEND:确实如此,但这要么需要显式化,要么OP需要显示不需要扩展。