从python中的Dictionary解析数据

时间:2017-07-07 05:10:00

标签: python json string parsing dictionary

所以我有这本词典"运行":

[{
'id': 12,
'suite_id': 2,
'name': 'name',
'description': "desc.",
'nice_id': 3,
'joku_id': None,
'onko': False,
'eikai': False,
'tehty': None,
'config': None,
'config_ids': [],
'passed_count': 1,
'blocked_count': 2,
'untested_count': 3,
'retest_count': 4,
'failed_count': 5,
'custom_status1_count': 0,
'custom_status2_count': 0,
'custom_status3_count': 0,
'custom_status4_count': 0,
'custom_status5_count': 0,
'custom_status6_count': 0,
'custom_status7_count': 0,
'projekti_id': 1,
'plan_id': None,
'created_on': 12343214,
'created_by': 11,
'url': 'google.com'
}, {
'id': 16,
'suite_id': 2,
'name': 'namae)',
'description': "desc1",
'nice_id': 5,
'joku_id': None,
'onko': False,
'eikai': False,
'tehty': None,
'config': None,
'config_ids': [],
'passed_count': 100,
'blocked_count': 1,
'untested_count': 3,
'retest_count': 2,
'failed_count': 5,
'custom_status1_count': 0,
'custom_status2_count': 0,
'custom_status3_count': 0,
'custom_status4_count': 0,
'custom_status5_count': 0,
'custom_status6_count': 0,
'custom_status7_count': 0,
'prokti_id': 7,
'plan_id': None,
'created_on': 4321341644,
'created_by': 11,
'url': 'google.com/2' }

有" id"约50次。这只是其中的一部分。 我需要找到所有" id":s(不是joku_ids,ncie_ids等等,只有" id")并创建一个字符串/字典 和名称和描述相同

我试过了:

j = json.load(run)
ids = (j["id"])

j = json.load(run)
names = (j["name"])

j = json.load(run)
descriptions = (j["description"])

但它返回:

AttributeError: 'list' object has no attribute 'read'

我还需要发送具有特定ID的请求,在这种情况下,特定ID标记为o。所以id [o] 请求代码如下:

test = client.send_get('get_tests/1/ ')

所以我需要id [o]而不是1。 我试过了

test = client.send_get('get_tests/' + id[o] + '/ ')

但它返回:

TypeError: 'int' object is not subscriptable

3 个答案:

答案 0 :(得分:0)

您正尝试将列表传递给json.load函数。请阅读docsLoad()不接受列表,接受

  

.read() - 支持包含JSON文档的类文件对象

答案 1 :(得分:0)

可能这可以帮到你。

id = []
for i in runs :
    id.append(i.get('id'))
  

[12,16]

答案 2 :(得分:0)

如果您希望将结果列入字典列表:

result = [{x:y} for i in range(len(data)) for x,y in data[i].items() if x=='id' or x=='name' or x=='description']

输出:

[{'name': 'name'}, {'id': 12}, {'description': 'desc.'}, {'name': 'namae)'}, {'id': 16}, {'description': 'desc1'}]

data是您的词典数据列表。 希望这个答案对你有所帮助。