

> local_character_rdf.json を読んで，都道府県名をキーに，その都道府県に所属する
> ご当地キャラクターの名前の集合（セット）を値とする辞書を作成しなさい．  
>  それを使って，都道府毎にご当地キャラクターの数を調べて，多い順に表示するプログラムを作成しなさい．

というものなのですが、この通り、

[code]

    import json
    
    with open("local_character_rdf.json") as f:
        local_characters = json.load(f)
    
    pref = ("北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県","茨城県","栃木県",
    "群馬県","埼玉県","千葉県","東京都","神奈川県","新潟県","富山県","石川県","福井県",
    "山梨県","長野県","岐阜県","静岡県","愛知県","三重県","滋賀県","京都府","大阪府",
    "兵庫県","奈良県","和歌山県","鳥取県","島根県","岡山県","広島県","山口県","徳島県",
    "香川県","愛媛県","高知県","福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県",
    "鹿児島県","沖縄県")
    sale={0}
    
    for character in local_characters.values():
        for i in range(0,53):
             if character["http://imi.ipa.go.jp/ns/core/rdf#都道府県"][0]["value"] == pref[i]:
                  sale.add(
             character["http://imi.ipa.go.jp/ns/core/rdf#名称"][0]["value"])
    print(pref[1],len(sale)-1)
    
[/code]

全くできません。どうすれば良いのでしょうか。


CC BY-SA 4.0
2023-07-28T23:19:55.577
95794
2023-07-29T00:33:53.037
2023-07-29T00:19:14.547
19110
59293
question
python
課題がわけわかりません、助けてください。


`defaultdict` を利用する場合。

[code]

    import json
    from collections import defaultdict
    
    with open("local_character_rdf.json") as f:
        local_characters = json.load(f)
    
    pref_key = 'http://imi.ipa.go.jp/ns/core/rdf#都道府県'
    name_key = 'http://imi.ipa.go.jp/ns/core/rdf#名称'
    characters_dict = defaultdict(set)
    for v in local_characters.values():
        pref = v[pref_key][0]['value']
        name = v[name_key][0]['value']
        characters_dict[pref].add(name)
    
    characters_dict = dict(characters_dict)
    
    for pref, chars in sorted(characters_dict.items(), key=lambda x: -len(x[1])):
        print(pref, len(chars))
    
    # 東京都 192
    # 愛知県 123
    # 大阪府 93
    # 埼玉県 79
    # 神奈川県 74
    #       :
    #
    
[/code]


CC BY-SA 4.0
2023-07-29T00:33:53.037
95795
2023-07-29T00:33:53.037
47127
95794
answer