[英]I am trying to run code in Numpy arrays .. But an attribute error keeps coming up
[英]I am trying test a function that sorts a nested array of dictionaries buy the key "createdAt" but coming across an attribute error
简而言之,我收到一个 project_versions_items 列表作为字典列表,使用“CreatedAt”键对该列表进行排序并将该列表与 delete_list(结构为 dic 列表)进行比较。 如果该项目尚不存在,则 6 oldest/createdAt 将附加到 delete_list。
我已经检查了视频和文档,并且知道我在使用嵌套词典的正确轨道上,但现在无法弄清楚我哪里出错了
但是,上面的错误不断出现,我并没有用尽所有选择 - 请帮忙。
终端错误:
py::test__total_count_check Failed: \[undefined\]AttributeError: 'dict' object has no attribute 'sort'
测试用例:
`
def test__total_count_check():
input_project_items = load_json_fixture(
"fixtures/blackduck/api.project.createdAt.json"
)
input_delete_list = \[\]
expected_delete_list_ouput = \[\]
\# WHEN
populate_blackduck_delete_list = total_count_check(
input_project_items, input_delete_list
)
\# THEN
assert populate_blackduck_delete_list == expected_delete_list_ouput
`
expected_delete 字典列表数组中的 6 项示例如下:
`
"items": \[
{
"versionName": "CICD-1264",
"phase": "DEVELOPMENT",
"distribution": "EXTERNAL",
"license": {
"type": "DISJUNCTIVE",
"licenses": \[
{
"license": "XYZ",
"licenses": \[\],
"name": "Unknown License",
"ownership": "UNKNOWN",
"licenseDisplay": "Unknown License",
"licenseFamilySummary": {
"name": "Unknown",
"href": "XYZ"
}
}
\],
"licenseDisplay": "Unknown License"
},
"createdAt": "2022-07-27T10:09:52.490Z",
"createdBy": "XYZ",
"createdByUser": "XYZ",
"settingUpdatedAt": "2022-07-27T10:09:52.490Z",
"settingUpdatedBy": "XYZ",
"settingUpdatedByUser": "XYZ",
"source": "CUSTOM",
"\_meta": {
"allow": \[
"DELETE",
"GET",
"PUT"
\],
`
和原来的function如下:
`
def total_count_check(project_version_items, delete_list):
project_version_items.sort(key=operator.itemgetter("createdAt"))
for item in project_version_items:
if item not in delete_list:
delete_list.append(item)
if len(delete_list) \>= 6:
break
return delete_list
`
project_version_items.sort(key=operator.itemgetter("createdAt")) 我知道错误不喜欢排序,但在各种文档中这应该没问题吗?
你提供了零碎的数据,所以还不是很清楚,但我认为你正在传递一个带有名为“items”的键的字典(因为它来自 a.json)。 “items”键的值是一个列表。 大概这个列表是可排序的,但是,您正在将 the.sort() function 应用于字典。 而是将其应用于“items”键的值。
所以,如果我试图弄清楚你在做什么,它可能看起来像这样:
import operator
someDict = {
"items": [
{
"versionName": "CICD-1264",
"phase": "DEVELOPMENT",
"distribution": "EXTERNAL",
"license": {
"type": "DISJUNCTIVE",
"licenses": [
{
"license": "XYZ",
"licenses": [],
"name": "Unknown License",
"ownership": "UNKNOWN",
"licenseDisplay": "Unknown License",
"licenseFamilySummary": {
"name": "Unknown",
"href": "XYZ"
}
}
],
"licenseDisplay": "Unknown License"
},
"createdAt": "2022-07-27T10:09:52.490Z",
"createdBy": "XYZ",
"createdByUser": "XYZ",
"settingUpdatedAt": "2022-07-27T10:09:52.490Z",
"settingUpdatedBy": "XYZ",
"settingUpdatedByUser": "XYZ",
"source": "CUSTOM",
"_meta": {
"allow": [
"DELETE",
"GET",
"PUT"
],
}
},
{
"versionName": "CICD-1264",
"phase": "DEVELOPMENT",
"distribution": "EXTERNAL",
"license": {
"type": "DISJUNCTIVE",
"licenses": [
{
"license": "XYZ",
"licenses": [],
"name": "Unknown License",
"ownership": "UNKNOWN",
"licenseDisplay": "Unknown License",
"licenseFamilySummary": {
"name": "Unknown",
"href": "XYZ"
}
}
],
"licenseDisplay": "Unknown License"
},
"createdAt": "2022-07-27T10:09:51.490Z",
"createdBy": "XYZ",
"createdByUser": "XYZ",
"settingUpdatedAt": "2022-07-27T10:09:52.490Z",
"settingUpdatedBy": "XYZ",
"settingUpdatedByUser": "XYZ",
"source": "CUSTOM",
"_meta": {
"allow": [
"DELETE",
"GET",
"PUT"
],
}
}
]
}
someDict["items"].sort(key=operator.itemgetter("createdAt"))
print(someDict)
output 看起来像这样:
{'items': [{'versionName': 'CICD-1264', 'phase': 'DEVELOPMENT', 'distribution': 'EXTERNAL', 'license': {'type': 'DISJUNCTIVE', 'licenses': [{'license': 'XYZ', 'licenses': [], 'name': 'Unknown License', 'ownership': 'UNKNOWN', 'licenseDisplay': 'Unknown License', 'licenseFamilySummary': {'name': 'Unknown', 'href': 'XYZ'}}], 'licenseDisplay': 'Unknown License'}, 'createdAt': '2022-07-27T10:09:51.490Z', 'createdBy': 'XYZ', 'createdByUser': 'XYZ', 'settingUpdatedAt': '2022-07-27T10:09:52.490Z', 'settingUpdatedBy': 'XYZ', 'settingUpdatedByUser': 'XYZ', 'source': 'CUSTOM', '_meta': {'allow': ['DELETE', 'GET', 'PUT']}}, {'versionName': 'CICD-1264', 'phase': 'DEVELOPMENT', 'distribution': 'EXTERNAL', 'license': {'type': 'DISJUNCTIVE', 'licenses': [{'license': 'XYZ', 'licenses': [], 'name': 'Unknown License', 'ownership': 'UNKNOWN', 'licenseDisplay': 'Unknown License', 'licenseFamilySummary': {'name': 'Unknown', 'href': 'XYZ'}}], 'licenseDisplay': 'Unknown License'}, 'createdAt': '2022-07-27T10:09:52.490Z', 'createdBy': 'XYZ', 'createdByUser': 'XYZ', 'settingUpdatedAt': '2022-07-27T10:09:52.490Z', 'settingUpdatedBy': 'XYZ', 'settingUpdatedByUser': 'XYZ', 'source': 'CUSTOM', '_meta': {'allow': ['DELETE', 'GET', 'PUT']}}]}
我构建了修改后的 dict,这样排序将具有根据 createdAt 字段的值切换上面的第一项和第二项的效果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.