比较包含列表的字典

时间:2020-03-08 20:07:22

标签: python python-3.x list dictionary

我有一个包含26个键的列表字典,每个键都有26个给定长度的列表。这些键代表英语拉丁字母的字母。该列表包含给定位置出现的给定字符,用于一定长度的单词。例如,如果我们要表示出现长度为5的单词,我可能会收到以下输出:

D = {'a':[5,2,0,1,4],…。,'z':[0,7,5,2,1]}

我的目标是按索引比较键a和键z。所以我想将'a':[5]与'z':[0]进行比较,如果'a'>'z',我想返回a。基本,我想比较每个索引,如果该索引较大,我想返回该索引的字母。我当前的代码如下:

def most_common_character_by_index(D):

    for key in D:
        for value in key:
            f = map(D[key], D[value] )
    print(list[f])

当时的想法是绘制索引并进行比较。也许我缺少什么?当前错误代码返回:print(list [f]) TypeError:“类型”对象不可下标

2 个答案:

答案 0 :(得分:1)

def mostCommonLetters(D):

    numberOfValues = len(D['a'])

    listOfMostCommonLetters = []

    for i in range(numberOfValues):
        currMax = D['a'][i]
        mostCommonLetter = 'a'
        for letter in D:
            if D[letter][i] >= currMax:
                currMax = D[letter][i]
                mostCommonLetter = letter
        listOfMostCommonLetters.append(mostCommonLetter)

    return listOfMostCommonLetters

print(mostCommonLetters({'a': [5, 2, 0, 1, 4],'z': [0, 7, 5, 2, 1]}))

答案 1 :(得分:0)

主要问题是这样:

list[f]

您将放在方括号中,这意味着您试图订阅list构造函数。因此是错误。

你想要的是

list(f)

无论如何,还有其他问题:

for value in key:将遍历密钥本身,您可能需要for value in D[key]

此外,f被用在循环之外。