i have a dictionary I would like to append to another dictionary's HIGHSEVERITY
key to.
vulnsBySeverity={"HIGHSEVERITY":"", "MEDIUMSEVERITY":"", "LOWSEVERITY":""}
for result in json_object['results']:
for vuln in result['vulnerabilities']:
if vuln["severity"] == "high":
print("Its high!: {}".format(vuln))
vulnsBySeverity["HIGHSEVERITY"].update(vuln)
However, when I run this last line it gives me an error of:
AttributeError: 'str' object has no attribute 'update'
What im looking to do is append the value of vuln
(a dictionary) to the dictionary key vulnsBySeverity["HIGHSEVERITY"]
but getting that error? Note this dictionary vulnsBySeverity
will have more than 1
vuln
that im attempting to append to the HIGHSEVERITY
key.
Can someone help me out? Please, and thank you.
CodePudding user response:
The .update()
method is applicable to a dict
, but vulnsBySeverity["HIGHSEVERITY"]
is a string (from the initialization)
In your case, you don't need this method i think. A simple =
should do the trick:
vulnsBySeverity["HIGHSEVERITY"] = vuln
If multiple vuln
may have a "high" priority, you could think of using a list too:
vulnsBySeverity["HIGHSEVERITY"] = []
for result in json_object['results']:
for vuln in result['vulnerabilities']:
if vuln["severity"] == "high":
vulnsBySeverity["HIGHSEVERITY"].append(vuln)
Take care of mutability in these cases, if you're modifying vuln after the assignments. (Use vuln.copy()
in this case)
Note:
As mentionned in your comments, you can initialize vulnsBySeverity["HIGHSEVERITY"]
to use .update()
but this won't work if multiple vuln
have a "high" priority (Only the last one will be taken into account. Previous ones will be overwritten because of the update)
Note: You can use list comprehension too, if you use the list solution:
for result in json_object['results']:
vulnsBySeverity["HIGHSEVERITY"] = [vuln for vuln in result['vulnerabilities'] if vuln["severity"] == "high"]
CodePudding user response:
The problem is the value of the dictionary vulnsBySeverity
is an empty string. string type has no update
method. I think a dictionary of lists would be better. And append the vuln
dictionaries to the list like below.
vulnsBySeverity = {"HIGHSEVERITY": [], "MEDIUMSEVERITY": [], "LOWSEVERITY": []}
for result in json_object['results']:
for vuln in result['vulnerabilities']:
if vuln["severity"] == "high":
print("Its high!: {}".format(vuln))
vulnsBySeverity["HIGHSEVERITY"].append(vuln)