Pythonic way to merge two List of tuples into single list of dict
嗨,我对python很陌生,所以我还没有真正了解所有的小技巧和快捷方式。我有两个多维数组:
1 2 | >>> colorStrings [('0', '2371_9890_020'), ('1', '2371_9031_100'), ('2', '2371_9890_464')] |
和
1 2 | >>> skus [('0', '0017651670'), ('0', '0017651688'), ('0', '0017651696'), ('0', '0017651704'), ('0', '0017651712'), ('0', '0017651720'), ('0', '0017651738'), ('1', '0017650896'), ('1', '0017650904'), ('1', '0017650912'), ('1', '0017650920'), ('1', '0017650938'), ('1', '0017650946'), ('1', '0017650953'), ('2', '0017651746'), ('2', '0017651753'), ('2', '0017651761'), ('2', '0017651779'), ('2', '0017651787'), ('2', '0017651795'), ('2', '0017651803')] |
号
基本上,我想将这些合并到一个字典对象数组中。比如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [ { 'colorString': '2371_9890_020' 'skus': ('0017651670', '0017651688', '0017651696', '0017651704', '0017651712', '0017651720, '0017651738') }, { 'colorString': '2371_9031_100' 'skus': ('0017650896', '0017650904', '0017650912', '0017650920', '0017650938', '0017650946, '0017650953') }, { 'colorString': '2371_9890_464' 'skus': ('0017651746', '0017651753', '0017651761', '0017651779', '0017651787', '0017651795, '0017651803') } ] |
有没有一些Kewl的Python式的方法可以很容易地使用lamba的表达或一些俏皮的表达?谢谢!
试试这个:
1 2 3 4 5 6 | result = [ { 'colorString' : color, 'skus' : [value for key, value in skus if key is colorkey] } for colorkey, color in colorStrings ] |
使用
1 2 3 4 5 6 7 | from collections import defaultdict sku_dict = defaultdict(list) for color_id, sku in skus: sku_dict[color_id].append(sku) combined = [dict(colorString=color, skus=sku_dict.get(color_id)) for color_id, color in colorStrings] |
1 | dict(d1, **d2) |
号
看这个相关的问题,我如何将听写合并在一起?