Understanding In-Dict List Operations in JSON on Python 3

Asked 2 years ago, Updated 2 years ago, 33 views

jsonFile.json

{
Site 1 : ["URL1", "URL2", "URL3",
Site 2 : ["URL 4", "URL 5", "URL 6",
Site 3 : ["URL7", "URL8", "URL9"]
}

There is a JSON file that contains the values of the dictionary as shown above.

import json

f=open("jsonFile.json")
data=json.load(f)
data = data

values=datas.values()

for valueList in values:
    for value in valueList:
            print('<li><a href=\"{0}\"target=\"_blank\">/a>/li>'.format(value))

#<li><a href="URL1" target="_blank">/a>/li>
#<li><a href="URL2" target="_blank">/a>/li>
#<li><a href="URL3" target="_blank">/a>/li>
#<li><a href="URL4" target="_blank">/a>/li>
#<li><a href="URL5" target="_blank">/a>/li>
#<li><a href="URL6" target="_blank">/a>/li>
#<li><a href="URL7" target="_blank">/a>/li>
#<li><a href="URL8" target="_blank">/a>/li>
#<li><a href="URL9" target="_blank">/a>/li>

Ideal

#<li><a href="URL1" target="_blank">Site 1</a>/li>
#<li><a href="URL4" target="_blank">Site 2</a>/li>
#<li><a href="URL7" target="_blank">Site 3</a>/li>
#<li><a href="URL2" target="_blank">Site 1</a>/li>
#<li><a href="URL5" target="_blank">Site 2</a>/li>
#<li><a href="URL8" target="_blank">Site 3</a>/li>
#<li><a href="URL3" target="_blank">Site 1</a>/li>
#<li><a href="URL6" target="_blank">Site 2</a>/li>
#<li><a href="URL9" target="_blank">Site 3</a>/li>

Could you tell me the ideal for loop statement to output?

python python3

2022-09-30 15:30

1 Answers

What about the following code?

import json

f=open("jsonFile.json")
data=json.load(f)
data = data

# Remove only keys that begin with "Site"
site_keys = sorted (filter(lambdak:k.startswith('site'), datas))

# List of ("Site N", "URM") forms
d = [ ]
forkinsite_keys:
    row = [ ]
    for vin datas [k]:
        row.append([v,k])
    d.append(row)

# revolving
d=list(zip(*d))

Forrind:
    For vinr:
        print('<li><a href=\"{0}\"target=\"_blank\">{1}</a>/li>'.format(v[0], v[1]))

# Or (replacement of last double for)
# from functools import reduction
# d=reduce(lambda accum, a:accum+a,d)
# for vind:
#     print('<li><a href=\"{0}\"target=\"_blank\">{1}</a>/li>'.format(v[0], v[1]))

If the shape of the "site" key is a little more complicated, you may have to use regular expressions.


2022-09-30 15:30

If you have any answers or tips


© 2024 OneMinuteCode. All rights reserved.