Python嵌套字典来自字典列表

2024-03-28 15:42:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个清单:

[{"id": "11a6343897504c219ddec86491394b84", "smile_conf": 
  "99.91191864013672", "mouthopen_conf": "97.74097442626953", "smile":"False",
  "camid": "p2.jpeg"},{"id": "11a6343897504c219ddec864914444", "smile_conf": 
  "99.913333672", "mouthopen_conf": "97.74097442626953", "smile": "True", 
  "camid": "p2.jpeg"},{"id": "11a634344441394b84", "smile_conf": 
  "99.91191864013672", "mouthopen_conf": "97.74097442626953", "smile": "False",
  "camid": "p2.jpeg"}]

我想创建一个这样的dict:

{
    {"id": "11a6343897504c219ddec86491394b84",
         {"smile_conf": "99.91191864013672",
             "mouthopen_conf": "97.74097442626953",
             "smile": "False",
             "camid": "p2.jpeg"}
    }
    {"id": "11a6343897504c219ddec864914444",
        {"smile_conf": "99.91191864013672",
            "mouthopen_conf": "97.74097442626953",
            "smile": "True",
            "camid": "p2.jpeg"}
    }
    {"id": "11a634344441394b84",
        {"smile_conf": "99.91191864013672",
            "mouthopen_conf": "97.74097442626953",
            "smile": "True",
            "camid": "p2.jpeg"}

}

我尝试:

mydict = {}
for i in range(0,len(l1)):
    mydict[i] = {}
    for id,cont in l1[i]:
         mydict[i][id] = cont

但它不起作用,它返回了一个关于嵌套for的错误。你知道吗

我怎样才能做到这一点?你知道吗


Tags: inidfalsetruel1forconfdict
2条回答

如果您的预期输出是

{
  "11a6343897504c219ddec86491394b84": {
    "camid": "p2.jpeg",
    "smile": "False",
    "smile_conf": "99.91191864013672",
    "mouthopen_conf": "97.74097442626953"
  },
  "11a634344441394b84": {
    "camid": "p2.jpeg",
    "smile": "False",
    "smile_conf": "99.91191864013672",
    "mouthopen_conf": "97.74097442626953"
  },
  "11a6343897504c219ddec864914444": {
    "camid": "p2.jpeg",
    "smile": "True",
    "smile_conf": "99.913333672",
    "mouthopen_conf": "97.74097442626953"
  }
}

然后试试下面的简单方法:

list = [
  {
    "id": "11a6343897504c219ddec86491394b84",
    "smile_conf": "99.91191864013672",
    "mouthopen_conf": "97.74097442626953",
    "smile": "False",
    "camid": "p2.jpeg"
  },
  {
    "id": "11a6343897504c219ddec864914444",
    "smile_conf": "99.913333672",
    "mouthopen_conf": "97.74097442626953",
    "smile": "True",
    "camid": "p2.jpeg"
  },
  {
    "id": "11a634344441394b84",
    "smile_conf": "99.91191864013672",
    "mouthopen_conf": "97.74097442626953",
    "smile": "False",
    "camid": "p2.jpeg"
  }
]

print list

requiredDict = {}

for eachElement in list:
    id = eachElement["id"]
    requiredDict[id] = {}
    del eachElement["id"]
    requiredDict[id] = eachElement

print requiredDict

dict用于存储键值对,但是您将值分配给索引,这是列表的目的。您不需要将列表转换为dict。 您可以像这样迭代列表:

for item in lst:
    <do something>

或者可以使用整数索引列表:

lst[n]

但dict用于存储键值对,如下所示:

dct = {}
dct["hello"] = 42
dct[5] = 786
for i in dct.keys(): # Iterate over the keys
    print(i, dct[i])

dict语法是这样写的:

dct = {key: val, key2: val2, ...}

不能有这样的dict:{0,1,2,3},因为dict存储键值对。这就是不能被索引的集合的语法。你知道吗

s = {1, 2, 3}
s[0] # ERROR

集合用于检查它们是否包含元素。 还要注意,集合不能存储不可修改(通常是可变的)对象。这也适用于dict键(但不适用于值)。所以你不能有一套字典。你知道吗

相关问题 更多 >