Python3のJSONでのDict内List操作について

[code]

    jsonFile.json
    
    {
    "サイト1":["URL1","URL2","URL3"],
    "サイト2":["URL4","URL5","URL6"],
    "サイト3":["URL7","URL8","URL9"]
    }
    
[/code]

上記のような辞書のvalue部分が配列になっているJSONファイルがあります。

[code]

    import json
    
    f = open("jsonFile.json")
    data = json.load(f)
    datas = 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>
    
[/code]

理想

[code]

    #<li><a href="URL1" target="_blank">サイト1</a>/li>
    #<li><a href="URL4" target="_blank">サイト2</a>/li>
    #<li><a href="URL7" target="_blank">サイト3</a>/li>
    #<li><a href="URL2" target="_blank">サイト1</a>/li>
    #<li><a href="URL5" target="_blank">サイト2</a>/li>
    #<li><a href="URL8" target="_blank">サイト3</a>/li>
    #<li><a href="URL3" target="_blank">サイト1</a>/li>
    #<li><a href="URL6" target="_blank">サイト2</a>/li>
    #<li><a href="URL9" target="_blank">サイト3</a>/li>
    
[/code]

理想のように出力するforループ文を教えていただけませんか？




次のコードはどうでしょうか。

[code]

    import json
    
    f = open("jsonFile.json")
    data = json.load(f)
    datas = data
    
    # "サイト"で始まるキーのみ取り出す
    site_keys = sorted(filter(lambda k: k.startswith('サイト'), datas))
    
    # ("サイトN","URLM")の形のリスト
    d = []
    for k in site_keys:
        row = []
        for v in datas[k]:
            row.append([v,k])
        d.append(row)
    
    # 回転
    d = list(zip(*d))
    
    for r in d:
        for v in r:
            print('<li><a href=\"{0}\" target=\"_blank\">{1}</a>/li>'.format(v[0],v[1]))
    
    # もしくは(最後の2重forの代替)
    # from functools import reduce
    # d = reduce(lambda accum,a: accum+a, d)
    # for v in d:
    #     print('<li><a href=\"{0}\" target=\"_blank\">{1}</a>/li>'.format(v[0],v[1]))
    
[/code]

"サイト"キーの形がもう少し複雑なら正規表現などを使うことになるかも知れません。

