提问者:小点点

Python3:更新了没有重复项的字典项列表


我正在为concourse制作一个github问题资源,但我在使用python3时遇到了麻烦

我有version,这是一个字典列表,看起来是这样的。

version = [{"number": "123"}, {"modified": "2020-05-18T16:07:50Z"}, {"number": "321"}, {"modified": "2020-06-18T16:07:50Z"}, {"number": "543"}, {"modified": "2020-06-19T16:07:50Z"}]

该列表将有更多的项目,但将始终至少有1个项目。 最后修改的项目是列表中的最后一个项目。 我正在将version传递到此代码块:

last_modified = version[-1]['modified']
endpoint = "https://api.github.com/repos/repo/issues?sort=updated&direction=asc&since=" + last_modified
connection = requests.get(endpoint, headers=headers)
for i in connection.json():
    version.append( {"number": i['number'], "modified": i['updated_at']})
issues_updated_since = json.dumps(version)
return issues_updated_since

问题是我得到的是重复的,因为我只是添加项目到列表。 我需要能够只追加不是已经在列表中的项目,并在此列表中的项目,只更新那些更改了日期的项目。 我怎么能这么做呢?

这是针对自定义汇合资源的,如果有帮助,请使用check脚本。


共1个答案

匿名用户

您可以存储日期(此处为dates),并仅在收到的版本尚不存在时才追加到version

last_modified = version[-1]['modified']
dates = {v['modified'] for v in version}
endpoint = "https://api.github.com/repos/repo/issues?sort=updated&direction=asc&since=" + last_modified
connection = requests.get(endpoint, headers=headers)
for i in connection.json():
    if i['updated_at'] in dates:
        continue
    version.append({"number": i['number'], "modified": i['updated_at']})
    dates.add(i['updated_at'])
issues_updated_since = json.dumps(version)
return issues_updated_since