如何将字典与数组合并为指定格式的嵌套列表?
解决字典与数组的匹配合并问题
这问题挺常见的,我来给你几个实用的Python解法,都是日常开发里常用的操作:
首先先明确示例数据,方便你对照:
# 你的字典a a = {'Volvo': 657898, 'Volkswagen': 387564} # 你的数组b b = [['Volvo', 'VO'], ['Volkswagen', 'VW']]
方法1:列表推导式(简洁高效)
这是最Pythonic的写法,一行就能搞定,适合熟悉Python的同学:
result = [item + [a[item[0]]] for item in b]
逻辑很简单:遍历数组b里的每一个子列表item,用item[0](也就是品牌名称)去字典a里取出对应的数值,再把这个数值拼接到子列表的末尾,最后组成新的嵌套列表。
方法2:常规for循环(新手友好)
要是你刚学Python,觉得列表推导式有点绕,那就用分步的for循环来实现,逻辑更直观:
result = [] for brand_info in b: # 取出品牌名称,用来匹配字典的键 brand_name = brand_info[0] # 从字典中获取对应的数值 brand_value = a[brand_name] # 把数值追加到当前子列表后面,再加入结果列表 result.append(brand_info + [brand_value])
进阶:处理键不存在的情况
如果数组b里存在字典a没有的品牌名,上面的代码会抛出KeyError报错。这时候可以用字典的get()方法来做容错处理,比如给不存在的键设置一个默认值(比如None或者0):
# 默认值设为None,你也可以改成0或者其他合适的值 result = [item + [a.get(item[0], None)] for item in b]
运行完上面的代码,你就能得到想要的格式:
[['Volvo', 'VO', 657898], ['Volkswagen', 'VW', 387564]]
内容的提问来源于stack exchange,提问作者pedskon
相关产品推荐
相关产品推荐

