簡體   English   中英

將列表字典轉換為字典字典

[英]Convert dictionary of lists to dictionary of dictionary

當前輸出的格式為列表字典

{
    "majestic-service-1.324.02070909": [
        "/home/robotics/arm-services/FeaturesDir.yaml",
        "/home/robotics/arm-service/majestic-service.tar.gz"
    ],
}

我希望將該輸出格式更改為如下所示。(字典字典)

{
    "majestic-service-1.324.02070909": {
        "yaml_file": "/home/robotics/arm-services/FeaturesDir.yaml",
        "tar_file": "/home/robotics/arm-services/majestic-service-1.324.02070909.tar.gz",
        "kind": "FeaturesDir"
    }
}

我嘗試過的相應代碼片段,

 output_dict = {}
 for file in application_files:
    match = re.match(regex_pattern, os.path.basename(file))
    if match:
         if os.path.exists(os.path.join(os.path.dirname(file), "FeaturesDir.yaml")):
              output_dict[file_without_extension(match.string)] = {os.path.join(os.path.dirname(file), "FeaturesDir.yaml")}
              output_dict[file_without_extension(match.string)].append(file)
              output_dict["Kind"] = "FeaturesDir"
         elif os.path.exists(os.path.join(os.path.dirname(file), "output_path/Deviations.yaml")):
                output_dict[file_without_extension(match.string)] = {os.path.join(os.path.dirname(file), "output_path/Deviations")}
                output_dict[file_without_extension(match.string)].append(file)
                output_dict["Kind"] = "Deviations"

# where the function file_without_extension, will return - majestic-service-1.324.02070909 from majestic-service-1.324.02070909.tar.gz

它報告以下錯誤

AttributeError: 'set' object has no attribute 'append'

我究竟做錯了什么 ?

發生錯誤是因為在這一行output_dict[file_without_extension(match.string)] = {os.path.join(os.path.dirname(file), "output_path/Deviations")}您使用的是 {} 括號,用於 python旨在作為稱為 set 的數據類型。 集合沒有附加屬性,而是添加屬性,但它是完全不同的數據類型。 這就是為什么它會向您顯示這種錯誤!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM