将两个元组列表合并为单个di列表的python方法

2024-10-01 09:18:09 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我对Python还很陌生,所以我还不知道所有这些小技巧和快捷方式。我有两个多维数组:

>>> colorStrings
[('0', '2371_9890_020'), ('1', '2371_9031_100'), ('2', '2371_9890_464')]

以及

^{pr2}$

基本上,我想将这些合并到字典对象的数组中。比如:

[
{
   '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')
}
]

有没有一些河豚式的方法可以很容易地使用Lamba表达式或一些漂亮的东西来完成这个任务?谢谢!在


Tags: 对象方法技巧字典表达式数组快捷方式pr2
3条回答

试试这个:

 result = [
     {
         'colorString' : color, 
         'skus' : [value for key, value in skus if key is colorkey]
     } for colorkey, color in colorStrings 
 ]

使用^{}首先按sku__id对sku进行分组,然后使用列表理解来生成组合数据集

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]
dict(d1, **d2)

请参阅相关问题How do I merge dicts together

相关问题 更多 >