我正在从一个单独的字典列表创建一个字典列表,并转换内容。我想在理解过程中有条件地排除键,但我不确定如何排除。下面是我尝试做的一个例子:
old_dict_list = [
{ 'old_key_1': 'value1a', 'old_key_2': 'value2a', 'old_key_3': 'value3a'},
{ 'old_key_1': 'value1b', 'old_key_2': 'value2b', 'old_key_3': 'value3b'},
]
new_dict_list = [
{
'new_key1': old_dict['old_key_1'],
'new_key2': old_dict['old_key_2'], # exclude this key entirely if some condition is met
'new_key3': old_dict['old_key_3'],
}
for old_dict in old_dict_list
]
print(new_dict_list)
我不知道在这样使用理解时有条件地完全排除一个键的任何方法。我唯一的想法是在满足条件时使用固定的键值,比如None,然后单独遍历字典列表并删除那些None键
有没有办法在一次理解中做到这一点
这里有一个技巧,作为一个经验法则,如果可能的话,你应该避免技巧
我使用了
**
操作符来解压dict。如果满足条件,则此dict为{}
,如果不满足条件,则为{'new_key2': old_dict['old_key_2']}
。因此,仅当不满足条件时才创建键new_key2
在本例中,条件为
old_dict['old_key_2'].endswith("b")
,但您可以在old_dict
上设置任何其他条件我不会因为你正在用一种理解力列你的新单子而挂断电话
显然,如果你能将字典从旧格式转换成新格式,这只是一个简单的问题
然后,你的问题是“我可以写一个函数来转换吗?”如果有任何方法来描述你正在尝试做什么,那么答案是“是”(你的例子还远远没有完成):
相关问题 更多 >
编程相关推荐