如何在复杂数据中使用dict.get()的默认参数

时间:2017-01-27 18:21:19

标签: python dictionary

这是一个用于计算使用dict.get()方法的默认参数的单词的脚本:

word_list = ['abc', 'abc', 'def']
word_data = {}

for word in word_list:
    word_data[word] = word_data.get(word, 0) + 1

print(word_data)

这适用于简单计数。但是如果我想收集更多的数据,比如word_list中的单词条目的索引,那么我需要将这些额外的数据插入到get()的默认参数和尾随表达式中(" + 1& #34;。)

我该怎么做?

2 个答案:

答案 0 :(得分:1)

如果您想继续使用dict.get方法,那么,您可以这样做:

 for i, word in enumerate(word_list):
     elem = word_data.get(word, {'index':[], 'count':0})
     word_data.update({
         word: {
             'indexes': elem['indexes']+[i], 
             'count': elem['count']+1
         }
     })

然后,结果,你会得到:

{'abc': {'count': 2, 'indexes': [0, 1]}, 'def': {'count': 1, 'indexes': [2]}}

虽然在这种特殊情况下,可能只是跟踪索引会更有效(因为每个单词的出现次数只是该列表的长度),对吧? :)

答案 1 :(得分:0)

for word in sorted(set(word_list)):

    indices = [i for i, x in enumerate(word_list) if x == word]
    counts = word_list.count(word)

    word_data[word] = {}
    word_data[word]['count'] = counts
    word_data[word]['indexes'] = indices

希望这有助于交配!