Не могу понять простой код python. Как понять код?

Создает словарь, дальше перебирает список,
а вот последующий код не могу разобрать.

Здесь он записывает в словарь или проверяет входит ли в словарь данное значение?
for i in range(len(nums)):
            if nums[i] in buff_dict:

Почему в квадратных скобках сам словарь ?
return [buff_dict[nums[i]], i]

class Solution(object):
    def twoSum(self, nums, target):
        if len(nums) <= 1:
            return False
        buff_dict = {}
        for i in range(len(nums)):
            if nums[i] in buff_dict:
                return [buff_dict[nums[i]], i]
            else:
                buff_dict[target - nums[i]] = i
  • Вопрос задан
  • 366 просмотров
Решения вопроса 2
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
[buff_dict[nums[i]], i] - это расшифровывается так
1) nums[i] - получить элемент с индексом i из массива nums (назовем его a)
2) buff_dict[a] - получить из словаря элемент по ключу nums[i] (назовем его b)
3) return [b,i] - возвратить новый массив из двух элементов
Итого:
a = nums[i]
b = buff_dict[a]
return [b,i]
Ответ написан
Комментировать
adugin
@adugin Куратор тега Python
На Python так не пишут. Вот как правильно:
class Solution:
    
    def two_sum(self, numbers, target):
        buffer = {}
        for index, number in enumerate(numbers):
            try:
                return [buffer[number], index]
            except KeyError:
                buffer[target - number] = index
        return False
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@bibliophile
Повторю все тоже самое что и выше, только чуточку подробней. У nums есть какое то количество элементов, это число которое как раз возвращает len(nums)(к примеру 8, то есть в массиве 8 элементов), то есть:
for i in range(8) - думаю ты понимаешь что это
теперь мы достаем из массива nums те элементы которые находятся по индексу i, то есть у нас получается цепочка nums[0], nums[1], nums[2] и т.д.
Каждый раз когда мы берем один элемент из массива nums мы проверяем: есть ли такой ключ в словаре buff_dict, если да, то мы говорим:
Верни мне массив первым элементом которого будет значение которое лежит в словаре buff_dict по ключу nums[i], а вторым элементом верни сам индекс i.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы