将两个元组列表合并为单个字典列表的Pythonic方法

标签 python list dictionary merge

您好,我是 Python 的新手,所以我还不太了解所有的小技巧和快捷方式。我有两个多维数组:

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

>>> 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')]

基本上,我想将它们合并到一个字典对象数组中。像这样的东西:

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

是否有一些 Pythonic 的方式可以使用 Lamba 表达式或一些巧妙的方式真正轻松地做到这一点?谢谢!

最佳答案

试试这个:

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

关于将两个元组列表合并为单个字典列表的Pythonic方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5828809/

相关文章:

Perl grep 即使在列表上下文中也总是返回匹配数

c# - 一种在不存储 key 的情况下将 key 存储在字典中的方法?

python - 来自 json.dumps 的奇怪类型错误

python - Cython 的 language_level 3 和 3str 之间有什么区别?

Python readlines() 并将数据附加到每一行输出到一行

javascript - 在带有 Jinja/Flask 的 Javascript 文件中使用 url_for()

android - 适配器显示所有选项卡中的最后一个值

python - Django 项目中的通配符子域

python - 排序包含列表的字典

c# - 无法将类型 'int' 隐式转换为 'System.Collections.Generic.List<QuickTest.Stock>'