сравнение словаря, содержащего списки - PullRequest
0 голосов
/ 08 марта 2020

У меня есть словарь списков, который содержит 26 ключей, каждый из которых имеет 26 списков заданной длины. Эти клавиши представляют буквы английского алфавита sh. Список содержит вхождения данного символа в данном месте для слов определенной длины. Например, если мы хотим представить вхождение слов длиной 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: объект 'type' не может быть подписан

Ответы [ 2 ]

1 голос
/ 08 марта 2020
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]}))
0 голосов
/ 08 марта 2020

Основная проблема заключается в следующем:

list[f]

вы ставите квадратные скобки, что означает, что вы пытаетесь подкриптировать конструктор list. Отсюда и ошибка.

То, что вам нужно, это

list(f)

В любом случае, существуют другие проблемы:

for value in key: будет перебирать сам ключ, вы можете захотеть for value in D[key].

Кроме того, f используется из l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...