当前位置: 首页 > 知识库问答 >
问题:

是否有一种优雅的合并方式来通过一个公共键合并一个指令列表?

徐瑞
2023-03-14

我正在寻找一个更优雅的方法,将这个指令列表变成一个单一的合并指令,其中键'SKU'作为合并的键。这些列表实际上都是很容易被转化为指令的模型。我没有找到一个更优雅的解决方案使用Pydantic。

Dicts/PydanticInstances列表

[a for a in m]
[
    PackMapPydantic(id=60, pack_sku='PACKFAC01', sku='FAC01', prop_name='Facebook Username'),
    PackMapPydantic(id=61, pack_sku='PACKFAC01', sku='FAC02', prop_name='Facebook Username'),
    PackMapPydantic(id=62, pack_sku='PACKFAC01', sku='FAC03', prop_name='Facebook Username'),
    PackMapPydantic(id=63, pack_sku='PACKFAC01', sku='FAC05', prop_name='Facebook Username'),
    PackMapPydantic(id=64, pack_sku='PACKFAC01', sku='FAC06', prop_name='Facebook Username'),
    PackMapPydantic(id=70, pack_sku='PACKFAC01', sku='FAC01', prop_name='Channel Name'),
    PackMapPydantic(id=71, pack_sku='PACKFAC01', sku='FAC02', prop_name='Channel Name'),
    PackMapPydantic(id=72, pack_sku='PACKFAC01', sku='FAC03', prop_name='Channel Name'),
    PackMapPydantic(id=73, pack_sku='PACKFAC01', sku='FAC05', prop_name='Channel Name'),
    PackMapPydantic(id=74, pack_sku='PACKFAC01', sku='FAC06', prop_name='Channel Name'),
    PackMapPydantic(id=87, pack_sku='PACKFAC01', sku='FAC01', prop_name='__uk_avatar (direct link)'),
    PackMapPydantic(id=88, pack_sku='PACKFAC01', sku='FAC02', prop_name='__uk_avatar (direct link)'),
    PackMapPydantic(id=89, pack_sku='PACKFAC01', sku='FAC03', prop_name='__uk_avatar (direct link)'),
    PackMapPydantic(id=90, pack_sku='PACKFAC01', sku='FAC06', prop_name='__uk_avatar (direct link)')
]

所需输出:

[
  {
      'sku': 'FAC05', 
      'prop_name': [
          'Username', 
          'Channel'
      ]
  },
  {
      'sku': 'FAC01',
      'prop_name': [
          'Username',
          'Channel',
          '__uk_avatar (direct link)'
      ]
  },
  {
      'sku': 'FAC06',
      'prop_name': [
          'Username',
          'Channel',
          '__uk_avatar (direct link)'
      ]
  },
  {
      'sku': 'FAC02',
      'prop_name': [
          'Username',
          '__uk_avatar (direct link)'
      ]
  },
  {
      'sku': 'FAC03',
      'prop_name': [
          'Username',
          'Channel',
          '__uk_avatar (direct link)'
      ]
  }
]

当前解决方案:

for sku in skus_distinct:
    this_assets = []
    for item in items_listed:
        if item['sku'] == sku:
            # item = list(item)
            this_assets.append(item['prop_name'])

    now = {'sku': sku,
           'prop_name': this_assets }

    print(now)

共有1个答案

裴姚石
2023-03-14

使用pandas(假设dict1是您的dict的初始列表)-

import pandas as pd
df  = pd.DataFrame(dict1)[['sku','prop_name']]
df  = df.groupby('sku').agg({'prop_name': list}).reset_index()
result_dict = df.to_dict(orient='records')

输出-

[{'sku': 'FAC01',
  'prop_name': ['Facebook Username',
   'Channel Name',
   '__uk_avatar {direct link}']},
 {'sku': 'FAC02',
  'prop_name': ['Facebook Username',
   'Channel Name',
   '__uk_avatar {direct link}']},
 {'sku': 'FAC03',
  'prop_name': ['Facebook Username',
   'Channel Name',
   '__uk_avatar {direct link}']},
 {'sku': 'FAC05', 'prop_name': ['Facebook Username', 'Channel Name']},
 {'sku': 'FAC06',
  'prop_name': ['Facebook Username',
   'Channel Name',
   '__uk_avatar {direct link}']}]
 类似资料:
  • 编辑: 一些人显然误解了这个问题。。我甚至没有仔细询问如何在python中进行切换/案例。请先读一遍,然后再投票结束 我有不同的函数,它们都高度相关,但参数略有不同。作为一个比喻,考虑它们代表不同的排序算法。现在,我想要一个大的参数化函数,它从外部调用,然后在内部调用正确的排序算法/正确的函数。 作为一个额外的要求,必须能够给所有这些子函数不同的输入信息(不同的参数数)。 我想出了一个解决办法,但

  • 问题内容: 我正在写一个小脚本来帮助日本假名记忆。我如何将以下列表合并为一个?我尝试如下。 问题答案: 单程:

  • 问题内容: 考虑以下列表: 我该如何实现? 我试过了: 但是,只有当我按一定顺序具有元组的元素时,它才起作用,这意味着它将导致以下结果: 问题答案: 您可以将元组视为图形中的边,而将目标视为在图形中查找连接的组件。然后,您可以简单地遍历顶点(元组中的项),并为尚未访问的每个顶点执行DFS生成组件: 输出: 注意,在上面,组件和组件中的元素都是随机顺序。

  • 本文向大家介绍Python-通过在第一个列表中保留重复项来合并两个列表,包括了Python-通过在第一个列表中保留重复项来合并两个列表的使用技巧和注意事项,需要的朋友参考一下 在使用python进行数据分析时,我们可能会遇到需要合并两个列表的情况。但是处理这些列表中存在的重复元素可能是一个挑战。在本文中,我们将了解如何通过维护第一个列表中的所有元素以及仅第二个列表中的唯一元素来合并两个列表。 使用

  • 现在我有了一个,它表示在特定时间板上当前的所有块。 我需要数一下一种类型有多少件,比如白车,黑皇后等,但正常的做法会变得太长,而且看起来很难看。我就是这么做的... 必须有一种更优雅的方法来实现这一点,它需要更少的代码行。我的意思是如果有超过6种类型的碎片和2种类型的颜色。我不能一直像这样给switch语句添加大小写,对吧?但我想不出怎样才能让它更优雅。

  • 在PostgreSQL中,我想使用SQL语句合并两列并从中创建一个新列。 我正在考虑使用concat(…) ,但有更好的方法吗<最好的方法是什么?