动态更新字典中的字典 return 不同参数的相同字符数

Update dictionary within dictionary dynamically return same character count for different parameters

我正在尝试为不同语言的文章检索维基百科页面的字符数。我使用的字典以页面名称作为键,以语言作为键,计数作为值的字典作为值。

密码是:

pages = ["L'arte della gioia", "Il nome della rosa"]
langs = ["it", "en"]
dicty = {}
dicto ={}
numz = 0
for x in langs:
    wikipedia.set_lang(x)
    for y in pages:
        pagelang = wikipedia.page(y)
        splittedpage = pagelang.content
        dicto[y] = dicty
        for char in splittedpage:
            numz +=1
            dicty[x] = numz

如果我打印 dicto,我得到

{"L'arte della gioia": {'it': 72226, 'en': 111647}, 'Il nome della rosa': {'it': 72226, 'en': 111647}}

两个页面的计数应该不同。

请尝试此代码。我没有 运行 因为我没有维基百科模块。

备注:

  1. 由于您的预期结果是dict[page,dict[lan,cnt]],我认为先迭代页面更自然,然后迭代语言。也许出于性能原因,您想要首先迭代语言,请发表评论。
  2. text的字符数可以简单地len(text),为什么要重复求和?
  3. 变量名。你很快就会迷失在 x y 之类的变量中。
pages = ["L'arte della gioia", "Il nome della rosa"]
langs = ["it", "en"]
dicto = {}
for page in pages:
    lang_cnt_dict = {}
    for lang in langs:
        wikipedia.set_lang(lang)
        page_lang = wikipedia.page(page)
        chars_cnt = len(pagelang.content)
        lang_cnt_dict[lan] = chars_cnt
    dicto[page] = lang_cnt_dict
print(dicto)

更新

如果你想先迭代语言

pages = ["L'arte della gioia", "Il nome della rosa"]
langs = ["it", "en"]
dicto = {}
for lang in langs:
    wikipedia.set_lang(lang)
    for page in pages:
        page_lang = wikipedia.page(page)
        chars_cnt = len(pagelang.content)
        if page in dicto:
            dicto[page][lang] = chars_cnt
        else:
            dicto[page] = {lang: chars_cnt}
print(dicto)