簡體   English   中英

如何創建列表的嵌套字典

[英]how to create a nested dictionary of list

我有一本這樣的字典:

mydic = {
  0: [('comp.sys.mac.hardware_51563', 0.31), ('rec.motorcycles_103140', 0.29), ('alt.atheism_54143', 0.27), ('misc.forsale_76672', 0.26), ('rec.motorcycles_104809', 0.26)], 
  1: [('alt.atheism_54143', 0.31), ('comp.sys.mac.hardware_51563', 0.30), ('rec.motorcycles_104885', 0.30), ('talk.religion.misc_84064', 0.28), ('rec.sport.baseball_104619', 0.27)], 
  2: [('alt.atheism_54143', 0.29), ('talk.religion.misc_84064', 0.29), ('rec.sport.hockey_53859', 0.26), ('sci.electronics_54162', 0.25), ('comp.sys.mac.hardware_52124', 0.25)]
}

我想要做的是剪切字符串最后一部分的數字,然后計算每個鍵的頻率。 但是,我還需要保持它們的順序才能得到這樣的結果:

{
  0: {'comp.sys.mac.hardware': [1, 1], 'rec.motorcycles': [2,2], 'alt.atheism': [1,3], 'misc.forsale': [1, 4]}, 
  1: {'alt.atheism': [1,1], 'comp.sys.mac.hardware': [1,2], 'rec.motorcycles': [1,3], 'talk.religion.misc': [1,4], 'rec.sport.baseball': [1,5]}, 
  2: {'alt.atheism': [1,1], 'talk.religion.misc': [1,2], 'rec.sport.hockey': [1,3], 'sci.electronics': [1,4], 'comp.sys.mac.hardware': [1,5]}
}

這里'comp.sys.mac.hardware': [1, 1]表示comp.sys.mac.hardware的頻率為1並且是初始列表中的第一件事。 'alt.atheism': [1,3]表示已重復1次,是原始列表中的第三項。

我已經對此進行了研究,到目前為止,我已經使用下面的代碼得出了一個結果。 我的問題是我不能在字典中包含order ,:

{
  0: {'comp.sys.mac.hardware': 1, 'rec.motorcycles': 2, 'alt.atheism': 1, 'misc.forsale': 1}, 
  1: {'alt.atheism': 1, 'comp.sys.mac.hardware': 1, 'rec.motorcycles': 1, 'talk.religion.misc': 1, 'rec.sport.baseball': 1}, 
  2: {'alt.atheism': 1, 'talk.religion.misc': 1, 'rec.sport.hockey': 1, 'sci.electronics': 1, 'comp.sys.mac.hardware': 1}
}


freq_dic = collections.defaultdict(dict)
for k, va in mydic.items():
    lst = []
    for m in va:
        el = m[0].split('_')[0]
        if el in freq_dic[k]:
            freq_dic[k][el] = freq_dic[k][el] + 1
        else:
            freq_dic[k][el] = 1

您只需要增加您的迭代,並且您將在循環中獲得可用的order

for order, m in enumerate(va,1):
    el = m[0].split('_')[0]
    if el in freq_dic[k]:
        freq_dic[k][el][0] += 1
    else:
        freq_dic[k][el] = [1, order]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM