在字典中的特定位置插入新的键值对

时间:2019-06-05 14:28:57

标签: python-3.x

我有一个小词典列表,我想在每个词典中插入一个值build_time,其中build_time对于字典中的不同job_name是不同的。

我已经在代码中的一个函数中添加了已经创建的字典列表,但是我的代码只是将所有值添加到字典列表的末尾。 这是我到目前为止尝试过的

part of code
# call the function to create initial dictionary
   url = "https://" + self.jenkins_instance + "/api/json?pretty=true&tree=jobs[name,lastBuild[url,id,building,builtOn,timestamp,result]]"
        try:
            urllib3.disable_warnings(category=InsecureRequestWarning)
            res = requests.get(url, auth=HTTPBasicAuth(self.user,
                                                    self.jenkins_api),
                                verify=False)
            jobs = json.loads(res.text).get("jobs")
            for j in jobs:
                last_build = j.get("lastBuild")
                if last_build is None:
                    continue
                self.start_timestamp = last_build.get("timestamp")

    records = {"last_build": self.start_timestamp}
    self.my_list.append(records)
    print(self.my_list)

这是我的初始清单

[{'job_name': 'name`', 'job_state': 'state_old'},
{'job_name': 'name2', 'job_state': 'state_new'}, 
{'job_name': 'name3', 'job_state': 'state_old'}]

这是一个示例列表,实际列表要长得多。

这是预期的输出

[{'job_name': 'name`', 'job_state': 'state_old', 'build_time':'xx-xx-xxx'}
,{'job_name': 'name2', 'job_state': 'state_new', 'build_time':'xy-xx-xxxy'}
,{'job_name': 'name3', 'job_state': 'state_old','build_time':'xx-xx-zzz'}]

我的代码是什么

[{'job_name': 'name`', 'job_state': 'state_old'}
,{'job_name': 'name2', 'job_state': 'state_new'}
,{'job_name': 'name3', 'job_state': 'state_old'}
, {'build_time':'xx-xx-xxx'}
,{'build_time':'xy-xx-xxxy'}
, 'build_time':'xx-xx-zzz'}]

1 个答案:

答案 0 :(得分:2)

为了更新列表中的每个字典,请更改以下内容:

self.my_list.append(records)

对此:

for item in self.my_list:
    item.update(records)