python嵌套列表/字典和弹出值

标签 python dictionary nested-lists

很抱歉这是一个新手问题。我刚开始写 python,我一直对从嵌套字典/列表中弹出值感到困惑,所以我很感激任何帮助!

我有这个示例 json 数据:

{ "scans": [
   { "status": "completed", "starttime": "20150803T000000", "id":533},
   { "status": "completed", "starttime": "20150803T000000", "id":539}
] }

我想从“扫描”键中弹出“id”。

def listscans():
  response = requests.get(scansurl + "scans", headers=headers, verify=False)
  json_data = json.loads(response.text)
  print json.dumps(json_data['scans']['id'], indent=2)

似乎不起作用,因为嵌套的键/值在列表中。即

>>> print json.dumps(json_data['scans']['id'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: list indices must be integers, not str

任何人都可以指出正确的方向来让它发挥作用吗?我的长期目标是创建一个 for 循环,将所有 id 放入另一个字典或列表中,我可以将其用于另一个功能。

最佳答案

json_data['scans'] 返回字典列表,您正在尝试使用 str 索引列表,即 []["id"] 失败显而易见的原因,因此您需要使用索引来获取每个子元素:

print json_data['scans'][0]['id'] # -> first dict
print json_data['scans'][1]['id'] # -> second dict

或者查看所有 id 遍历使用 json_data["scans"] 返回的字典列表:

for dct in json_data["scans"]:
    print(dct["id"]) 

保存附加到列表:

all_ids = []
for dct in json_data["scans"]:
    all_ids.append(dct["id"])

或者使用列表组件:

all_ids = [dct["id"] for dct in json_data["scans"]]

如果键 id 可能不在每个字典中,请在访问之前使用 in 进行检查:

all_ids = [dct["id"] for dct in json_data["scans"] if "id" in dct]

关于python嵌套列表/字典和弹出值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31791115/

相关文章:

python - 在 Python 中从命令行输入变量

python - 尝试在 Python : delete item in map and "vector.erase(vector.end())" 中重写 C++ 代码时出现问题

python - 获取字典上存在特定键值对的列表

python - 根据同一字典中的另一个值设置值,python

python - 如何对列表中的列表执行数学函数

javascript - Bokeh 如何存储日期时间信息

python - Django 中的内部 url 重定向

json - 使用 Swift 可解码解析 JSON 字典时出错

python - 将两个列表之间的数据排序到一个新列表中,并使用新列表中保存的数据格式化字符串列表

html - 我无法扩展最后一个 child 的边界