I am having trouble getting key values in a JSON.
import json
packages = [
[
{
"name": "a2ps",
"installs": 61423
},
{
"name": "aravis",
"installs": 61424
},
{
"name": "arangodb",
"installs": 61425
}
],
[
{
"name": "argon2",
"installs": 61420
},
{
"name": "archivemount",
"installs": 61421
},
{
"name": "archivemail",
"installs": 61422
}
]
]
package_names = [package_name['name'] for package_name in packages]
package_installs = [package_installs['installs'] for package_installs in packages]
As you can see, I am trying to get the packages name and install numbers but when I run the code I get an error. This is the full traceback:
Traceback (most recent call last):
File "/Users/me/Documents/json.py", line 1, in <module>
import json
File "/Users/me/Documents/json.py", line 35, in <module>
package_names = [package_name['name'] for package_name in packages]
File "/Users/me/Documents/json.py", line 35, in <listcomp>
package_names = [package_name['name'] for package_name in packages]
TypeError: list indices must be integers or slices, not str
But when I do the following, I do the get the names and installs but for only for the specified package.
package_names = [package_name['name'] for package_name in packages[0]]
package_names2 = [package_name['name'] for package_name in packages[1]]
package_installs = [package_installs['installs'] for package_installs in packages[0]]
package_installs2 = [package_installs['installs'] for package_installs in packages[1]]
print(package_names, package_names2, package_installs, package_installs2)
Output:
['a2ps', 'aravis', 'arangodb'] ['argon2', 'archivemount', 'archivemail'] [61423, 61424, 61425] [61420, 61421, 61422]
packagesis a list of lists of dictionaries (that have nothing to do with JSON, BTW - they're regular Python dictionaries). You want to iterate over the inner lists. But sincepackagesis a list of lists, you need to iterate over these inner lists first.