Кортеж tuple и словарь в Python
Данный фрагмент кода из множества alfa образует строку из 1000000 символов, в которой неалфавитные и неспецифические значения изменены символом (''). Полученная в конце строка разделена на слова, состоящие только из буквенных и числовых значений.
alfa = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1',
'2', '3', '4', '5', '6', '7', '8', '9', '.', ',', ':', ';', '!', '?', ' ']
N = 1000000
arr = ''.join([' ' if char in ['.', ',', ':', ';', '!', '?'] else char
for char in [choice(alfa) for _ in range(1000000)]]).split()
Условие: Используя arr сформируйте словарь следующим образом: Если слово начинается и заканчивается числовым значением, то в роли ключа словаря используйте 3-ёх элементный tuple объект, первое и последнее значение которого (индекс 0 и 2) будут соответственно первое и последнее цифровое значение слова, а также среднее значение (индекс 1) будут количество цифр в этом же слове. Текущее слово сохранить во множестве под этим ключом.
Надеюсь все правильно объяснил, очень надеюсь на вашу помощь
Ответы (1 шт):
Если я правильно понял...
import random
N = 1000000
arr = ''.join(random.choices('abcdefghijklmnopqrstuvwxyz0123456789 ', k=N)).split()
d = {}
for word in arr:
if word[0].isdigit() and word[-1].isdigit():
key = (word[0], sum(map(lambda x: x.isdigit(), word)) , word[-1])
d[key] = d.get(key, set()) | {word}
print(d)