【问题标题】:how to merge three dictionaries making 1 key have multiple separate list values如何合并三个字典,使 1 个键具有多个单独的列表值
【发布时间】:2020-08-07 04:49:36
【问题描述】:

我正在使用 Clarifai 的 API 从工作流程中的服装、颜色和纹理模型中获取预测。我目前正在解析每个模型的值。问题是我想将输入 URL 的每个预测值存储为数据框中的单独行条目。

所以考虑这个网址

url="https://cdn.jooraccess.com/img/uploads/accounts/206679/images/322.30.S21_1100_1F-a6da8113cfee494cab07808e93889f44.jpg"

我从中得到的预测分为三个字典作为

纹理模型

tex_dict = {
    'https://cdn.jooraccess.com/img/uploads/accounts/206679/images/322.30.S21_1100_1F-a6da8113cfee494cab07808e93889f44.jpg': [
        'Texture Model', 'leather', 'quilted', 'studded'
                                               'knit', 'dandelion', 'rust', 'felted', 'shibori']}

color_dict = {
    'https://cdn.jooraccess.com/img/uploads/accounts/206679/images/322.30.S21_1100_1F-a6da8113cfee494cab07808e93889f44.jpg': [
        'Color Model',
        '#696969, DimGray',
        '#ffffff, White',
        '#2f4f4f, DarkSlateGray']}

apparel_dict = {
    'https://cdn.jooraccess.com/img/uploads/accounts/206679/images/322.30.S21_1100_1F-a6da8113cfee494cab07808e93889f44.jpg': [
        'Apparel Model', 'Cross Body Bag', 'Satchel', 'Laptop ag', 'Tote Bag', 'Cross Body Bag', 'Satchel',
        'Laptop Bag', 'Wristlet & Clutch', 'Tote Bag']}

我要做的是将这些作为三个单独的条目添加到 Pandas 数据框中。我希望 1 个 URL 包含三个不同模型的 3 个条目。我正在运行它们的 URL 大约有 30 个

  URL  | Model Name | tag1 |tag2 |........tag n|
  URL A| color.     | tag1 |tag2 |........tag n|
  URL A| texture    | tag1 |tag2 |........tag n|
  URL A| Apparel    | tag1 |tag2 |........tag n|
  URL B| color.     | tag1 |tag2 |........tag n|
  URL B| texture    | tag1 |tag2 |........tag n|
  URL B| Apparel    | tag1 |tag2 |........tag n|
  URL C| color.     | tag1 |tag2 |........tag n|
  URL C| texture    | tag1 |tag2 |........tag n|
  URL C| Apparel    | tag1 |tag2 |........tag n|

我怎样才能做到这一点。

【问题讨论】:

  • 发布您刚刚发布的一些列名与您的字典键不匹配的预期输出
  • 添加了输出。谢谢你的收获
  • 你是在为 30 个 url 创建 30 * 3 个字典吗?
  • 所有字典的标签数量都差不多吗?您可以构建一个系列而不是一个 df,键和第一个值作为索引
  • 是的。这些 URL 的 30*3 字典。标签是可变的

标签: python pandas dictionary data-structures


【解决方案1】:

如果你将字典放在一个列表中,你可以构建一个 pandas 可以识别的字典理解

df = pd.DataFrame({list(d.keys())[0]: list(d.values())[0] 
    for d in list_with_dicts}).T.reset_index()

现在重命名列

df.columns = ['url', 'column2'] + ['tag' + str(i) for i in range(1, df.shape[1] - 1)]

【讨论】:

    【解决方案2】:

    我就是这样解决的。这是一种解决方法,但确实有效。

    1. 我通过将数据帧中的所有预测写入字典来获取它们。
    2. 然后我将行分组到列中。由于每个 URL 有 3 个预测行,因此按 URL 对它们进行排序会将它们组合在一起。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多