【问题标题】:Segregation based on the list基于列表的隔离
【发布时间】:2022-12-04 17:39:33
【问题描述】:

我有一个清单:

list = ['aaazzz0', 'aaazzz1', 'aaazzz2', 'aaazzz3', 'aaazzz4', 'aaazzz5', 'bbbzzz0', 'bbbzzz0', 'bbbzzz1','bbbzzz2','bbbzzz3','bbbzzz4','bbbxxx0','bbbxxx1','bbbxxx2','bbbxxx3']

我想要的状态是:

`

{
  "aaa": {
    "zzz": [
      "aaazzz0",
      "aaazzz1",
      "aaazzz2",
      "aaazzz3",
      "aaazzz4",
      "aaazzz5"
    ]
  },
  "bbb": {
    "zzz": [
      "bbbzzz0",
      "bbbzzz1",
      "bbbzzz2",
      "bbbzzz3",
      "bbbzzz4"
    ],
    "xxx": [
      "bbbxxx0",
      "bbbxxx1",
      "bbbxxx2",
      "bbbxxx3"
    ]
  }
}

`

我的代码是:

`

import re, json

list = ['aaazzz0', 'aaazzz1', 'aaazzz2', 'aaazzz3', 'aaazzz4', 'aaazzz5', 'bbbzzz0', 'bbbzzz0', 'bbbzzz1','bbbzzz2','bbbzzz3','bbbzzz4','bbbxxx0','bbbxxx1','bbbxxx2','bbbxxx3']

regex = '^.{3}([a-z]{3})'

all_dict = {}
a = {}
a_list = []
b = {}
b_list = []

for item in list:
    end_match = re.findall(regex, item)[0]
    aaa_match = re.search('aaa', item)
    bbb_match = re.search('bbb', item)
    for suffix in end_match:

        if aaa_match:
            a[suffix] = []
            a_list.append(item)
            a[suffix] = a_list

        elif bbb_match:
            b[suffix] = []
            b_list.append(item)
            b[suffix] = b_list



all_dict["aaa"] = a
all_dict["bbb"] = b

print(json.dumps(all_dict,indent=4))
        

`

所以我需要根据列表元素中的内容动态生成 zzz、xxx 键,它始终是 4、5、6 个字符。

此代码生成以下输出,这不是我要找的

`

{
    "aaa": {
        "z": [
            "aaazzz0",
            "aaazzz0",
            "aaazzz0",
            "aaazzz1",
            "aaazzz1",
            "aaazzz1",
            "aaazzz2",
            "aaazzz2",
            "aaazzz2",
            "aaazzz3",
            "aaazzz3",
            "aaazzz3",
            "aaazzz4",
            "aaazzz4",
            "aaazzz4",
            "aaazzz5",
            "aaazzz5",
            "aaazzz5"
        ]
    },
    "bbb": {
        "z": [
            "bbbzzz0",
            "bbbzzz0",
            "bbbzzz0",
            "bbbzzz0",
            "bbbzzz0",
            "bbbzzz0",
            "bbbzzz1",
            "bbbzzz1",
            "bbbzzz1",
            "bbbzzz2",
            "bbbzzz2",
            "bbbzzz2",
            "bbbzzz3",
            "bbbzzz3",
            "bbbzzz3",
            "bbbzzz4",
            "bbbzzz4",
            "bbbzzz4",
            "bbbxxx0",
            "bbbxxx0",
            "bbbxxx0",
            "bbbxxx1",
            "bbbxxx1",
            "bbbxxx1",
            "bbbxxx2",
            "bbbxxx2",
            "bbbxxx2",
            "bbbxxx3",
            "bbbxxx3",
            "bbbxxx3"
        ],
        "x": [
            "bbbzzz0",
            "bbbzzz0",
            "bbbzzz0",
            "bbbzzz0",
            "bbbzzz0",
            "bbbzzz0",
            "bbbzzz1",
            "bbbzzz1",
            "bbbzzz1",
            "bbbzzz2",
            "bbbzzz2",
            "bbbzzz2",
            "bbbzzz3",
            "bbbzzz3",
            "bbbzzz3",
            "bbbzzz4",
            "bbbzzz4",
            "bbbzzz4",
            "bbbxxx0",
            "bbbxxx0",
            "bbbxxx0",
            "bbbxxx1",
            "bbbxxx1",
            "bbbxxx1",
            "bbbxxx2",
            "bbbxxx2",
            "bbbxxx2",
            "bbbxxx3",
            "bbbxxx3",
            "bbbxxx3"
        ]
    }
}

`

我坚持......我的代码

【问题讨论】:

    标签: python-3.x python-re


    【解决方案1】:
    foo = ['aaazzz0', 'aaazzz1', 'aaazzz2', 'aaazzz3', 'aaazzz4', 'aaazzz5', 'bbbzzz0', 'bbbzzz0', 'bbbzzz1','bbbzzz2','bbbzzz3','bbbzzz4','bbbxxx0','bbbxxx1','bbbxxx2','bbbxxx3']
    output = {}
    for s in foo:
        output.setdefault(s[:3], {}).setdefault(s[3:6], []).append(s)
    print(output) # {'aaa': {'zzz': ['aaazzz0', 'aaazzz1', 'aaazzz2', 'aaazzz3', 'aaazzz4', 'aaazzz5']}, 'bbb': {'zzz': ['bbbzzz0', 'bbbzzz0', 'bbbzzz1', 'bbbzzz2', 'bbbzzz3', 'bbbzzz4'], 'xxx': ['bbbxxx0', 'bbbxxx1', 'bbbxxx2', 'bbbxxx3']}}
    

    【讨论】:

      猜你喜欢
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多