Python для начинающих. Урок 9: Словари (dict). Решение задач.

Поділитися
Вставка
  • Опубліковано 17 гру 2024

КОМЕНТАРІ • 282

  • @alishevN
    @alishevN  5 років тому +13

    1) Плейлист этого курса вот здесь: ua-cam.com/play/PLAma_mKffTOSY12JZS6l8lxKCpooPVcrn.html
    2) Не обязательно использовать Jupyter Notebook. Можно использовать любую другую IDE, например PyCharm - www.jetbrains.com/ru-ru/pycharm/
    Telegram: t.me/alishev_g
    Курс по GIT: www.udemy.com/course/git-alishev/?referralCode=71994763964B8E2E6A4E

  • @nox7925
    @nox7925 3 роки тому +59

    Если бы жизнь была Python- ом , то я в ней был бы pass-ом

  • @vladimirdragosh4846
    @vladimirdragosh4846 4 роки тому +10

    Превосходный паттерн изложения: Теория -> Задача -> Пауза -> Анализ решения задачи. Спасибо! Вы, как и всегда, на высоте!

  • @luide2167
    @luide2167 5 років тому +46

    Самый лучший урок это практика. Хотелось бы каких либо супер лёгких задачек.

  • @crabcrab1
    @crabcrab1 4 роки тому +81

    Чувствую себя отсталым, но спасибо

    • @ackiid
      @ackiid 3 роки тому +1

      ты не один такой

    • @vladimirvinogradov6815
      @vladimirvinogradov6815 3 роки тому +2

      @@ackiid и вас даже ни два

    • @ackiid
      @ackiid 3 роки тому +1

      @@vladimirvinogradov6815 множество тупых )))

    • @vladimirvinogradov6815
      @vladimirvinogradov6815 3 роки тому +5

      ​@@ackiid нужно использовать список!)

    • @СоняМармеладкина-з3з
      @СоняМармеладкина-з3з 3 роки тому +1

      @@vladimirvinogradov6815 и я с вами, хрен что поймешь с домашкой

  • @ghostlyangel1623
    @ghostlyangel1623 4 роки тому +53

    Со второй задачей, где нужно было посчитать слова - не сразу понял задание. Под посчитать слова я сначала подумал, что нужно просто посчитать кол-во слов, то есть например если их суммарно 16, то нужно это выяснить. Когда начал смотреть решение, понял, что что-то не так сделал. По первым словам решения подумал, что нужно создать словарь, в котором у каждого нового слова будет свой номер, и нужно посчитать кол-во уникальных слов. Сделал. И это было снова не то :D
    Было бы неплохо объяснить необходимый результат на примере, чтобы видеть, что должно получиться

    • @ПупканищеВзрывное
      @ПупканищеВзрывное 4 роки тому +10

      Ты ни один такой. Я тоже подумал про общее количество
      my_text = 'Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет'
      print (my_text.split())
      len (my_text.split())
      p= len (my_text.split())
      print ('В этом списке ' + str(p) + ' cлов' )

    • @MuaddibAtreides
      @MuaddibAtreides 4 роки тому +2

      но по сути все верно, он дал задачу а ты решил даже больше, значит урок дал результат)

    • @ЕгорЗверев-й8к
      @ЕгорЗверев-й8к 4 роки тому +1

      а каково условие второго задания в итоге? я тоже не понял, но решение смотреть не хочу, хочу сам сделать)

    • @ackiid
      @ackiid 3 роки тому +3

      аналогично понял задание, автору спасибо, но ставить задачу нужно точнее ))

    • @Borland06
      @Borland06 3 роки тому +1

      Ход моих мыслей был абсолютно идентичен твоему) Сделав задание по первому сопособу подумал, не омжет же быть так просто да и словарь тут не нужен, начал смотреть решение, подумал, видимо нужно посчитать количество уникальных слов -
      spl_text = my_text.split()
      set_txt=set()
      for f in spl_text:
      f2=f.lower()
      set_txt.add(f2)
      print (set_txt)
      print ('В тексте ' + str(len(set_txt)) + ' уникальных слов')
      Но все равно не понятно, причем тут словари? Смотрю дальше, а оказывается нужно было посчитать количество повторений слов...

  • @dimasydorenko6297
    @dimasydorenko6297 Рік тому +1

    list5 = ['first', 1, 2, 3,'second',10, 20,'third',15, 56, 70,'fourth', -50]
    dict3 = {}
    for vari1 in list5:
    if type(vari1) == str:
    el = []
    dict3[vari1] = el

    else:
    el.append(vari1)

    print(dict3)
    Вот еще способ решения первой задачи, боле проще , как по мне

  • @avvoltini4088
    @avvoltini4088 5 років тому +6

    Классно! Очень классная подача, всё, действительно понятно! И отличная идея с задачей, решать её в видео после паузы!

  • @100к-э2у
    @100к-э2у 4 роки тому +9

    Спасибо за старание! Уважение и огромная благодарность😊
    Сказать что тяжело, это ничего не сказать)))
    Ву блин, задачки конечно эти сложные. Реально, без просмотра не получается. А после просмотра вроде элементарно. Тяжело одним словом). Тернистым будет путь чувствую)))

  • @MaxllmuS
    @MaxllmuS 3 роки тому +2

    Довольно забавные ощущения, имеется небольшой опыт в других языках программирования.
    Начинаешь решать все сам, делаешь все красиво. Чувство гордости все дела )
    Потом открываешь решение и понимаешь что можно было сделать в 2 строчки и не вводить лишние переменные или циклы итд.
    Очень познавательно и интересно. Спасибо что каждый раз получается понять что то новое!

  • @ИльяБузынин
    @ИльяБузынин 2 роки тому

    Спасибо огромное за уроки! С первой задачей возникли трудности, но алгоритм выполнения задачи на листе изложил верно, а вот написать программу не хватило знания синтаксиса, хотя мысли были такие как в вашем решении.
    Вторую задачу решил практически сразу, (первым способом), но возникли трудности, опять же, не мог понять как в словаре поставить ЗНАЧЕНИЕ +1. Перепробовав множество вариантов ( и почему-то так и не воспользовавшись знанием с прошлых уроков( +=)) я обратился к гуглу и был расстроен узнав, что все намного проще чем я думал.
    Респект за труды!

  • @DarkMitr
    @DarkMitr 3 роки тому +3

    20:48 немного не честные условия. Я решил задачу немного другим способом, не знал что можно сразу добавлять через append в словарь ключи, поэтому сделал через две временные переменные, которые потом добавлялись как пара ключ-значение.

    • @automaks
      @automaks 3 роки тому

      Такая же история :)

    • @nikolaypirozhkov9786
      @nikolaypirozhkov9786 3 роки тому

      так мы не относительно словаря делаем .append, а относительно списка

  • @GitLev
    @GitLev 3 роки тому

    Мой первый сенсей по Pyton! Если что то не понятно пересматриваю до понимания. Большое Спасибо! Идей и развития!

  • @alexeykozlov7836
    @alexeykozlov7836 3 роки тому +6

    А я понял вторую задачу неправильно))) Подумал, что нужно подсчитать просто количество слов и сильно удивился, когда ты назвал её сложной, ибо же там всё вот так должно быть: print(len(my_text.split())). И только потом допёр, что надо было подсчитать количество повторений каждого слова)))

    • @AS-si3yv
      @AS-si3yv 3 роки тому

      ахах, плюсую) тоже в строчку записал и думаю что-то тут не так..

  • @musiclifeoffical
    @musiclifeoffical 4 роки тому +1

    чуть по другому зделал 1 но тот же результат
    d={}
    for e in range(len(a)):
    c =[]
    if type(a[e]) == str:
    i = e + 1
    while i

  • @ГригорийМашук
    @ГригорийМашук 2 роки тому +3

    Вторая задача new_slovar = {i: n.split().count(i) for i in n.split()}

  • @davida8216
    @davida8216 5 років тому +7

    Ты лучший !!!
    Ура новый урок

  • @santics9352
    @santics9352 2 роки тому

    такие элементарные вещи объясняют так, что мозг взорвется

  • @1993Slevin
    @1993Slevin 2 роки тому

    Наиль, привет! Спасибо большое за уроки, они правда стоящие! Действительно, второе задание не совсем корректно дано и я, как многие, просто подсчитал len, глупо радуясь быстрому успеху...)))

  • @donfedor007
    @donfedor007 4 роки тому +1

    Решение задачи номер 1 как я вижу. Теперь буду смотреть как надо было решать)
    a=["first", 1, 2, 3, "second", 10, 20, "third", 5, 56, 70, "fourth", -54]
    d={}
    m=[]
    x=len(a)
    for i in a:
    if type (i) == str:
    b = i
    m.clear()
    if type(i) == int:
    m.append(i)
    d[b]=m[:x]
    print (d)

  • @McClean974
    @McClean974 9 місяців тому

    интересное решение задачи через цикл for,я не додумался бы,думал надо сделать с вложенными циклами,но тоже не догнал как))
    в итоге решил так:
    a = ['first', 1, 'second', 10, 20, 'third',
    30, 40, 50, 'fourth', 15, 25, 45, 21]
    b = ['first', 'second', 'third', 'fourth']
    c = [[1], [10, 20], [30, 40, 50], [15, 25, 45, 21]]
    print(dict(zip(b, c)))

  • @КириллОструбин
    @КириллОструбин 3 роки тому +2

    lst = ['first', 1, 2, 3, 'second', 4, 5, 'third', 3, 1, 5]
    myDict = dict()
    values = []
    for elem in lst:
    while not type(elem) == str:
    values.append(elem)
    break
    if type(elem) == str:
    values = []
    myDict[elem] = values
    print(myDict)

  • @gulzhanamirbayeva8439
    @gulzhanamirbayeva8439 5 років тому +6

    Спасибо! Все отлично в этом курсе. Есть предложение - больше реальных кейсов, как задача #convert(miles)

  • @vladimirkulakov6126
    @vladimirkulakov6126 3 роки тому

    Супер! Всё получилось! Но первая задачка заставила прям подумать.

  • @ЭтоТеперьФридрих
    @ЭтоТеперьФридрих 4 роки тому

    Круто! Очень понравилось, разбора задач мне очень нехватает,наконец-то нашла что-то клёвое

  • @АнтонСачук-х9э
    @АнтонСачук-х9э 3 роки тому +3

    Слушай, я 2 задачи решил через цикл в цикле )))) Но твое решение по задачам конечно выглядит элегантнее ) Хоть мое и не такое изящное - но рад что сам решил без подсказки твоей :) И да - решение второй задачи я ещё не посмотрел :)

  • @postrate2515
    @postrate2515 5 років тому +9

    Ждёём продолжение курса по Python !!

  • @steelheelru
    @steelheelru 4 роки тому +7

    Да, со второй задачей - не правильно, или даже не точно был задан вопрос. Нужно было наверное сказать - сколько каждого слова в списке. А то я так же как и многие (судя по отзывам) посчитал общее кол-во слов и уникальных слов )

  • @ВикторКопанов-о8с
    @ВикторКопанов-о8с 3 роки тому +4

    Помогите разобраться, в задаче с определением количества слов не понял.
    написали цикл
    for word in my_text.split():
    if word in my_dict2: - почему здесь то проверяем наличие слова в словаре my_dict2, он же ведь еще пустой?

    • @almaYs_gg
      @almaYs_gg 3 роки тому

      такой же вопрос !

  • @КорнейЕвлампович
    @КорнейЕвлампович 2 роки тому +1

    Вторая задача, решение с использованием set() - множество.
    text = 'никогда не поздно быть тем кем ты мог бы быть никогда не поздно быть тем кем ты мог бы быть'
    words = text.split() # создаем переменную и присваиваем ей массив со всеми словами из текста
    set_words = set() # создаем пустое множество
    for w in words:
    set_words.add(w) # помещаем слова в set_words (в set() нельзя поместить одинаковые элементы)
    print(len(set_words)) # выводим количество элементов в множестве set_words
    >> 9

  • @ikeet
    @ikeet 5 років тому +14

    Наиль, все ждут 10 урок. Уже больше 5 месяцев прошло.. Не подведи родной

  • @gulnarcabbarova9653
    @gulnarcabbarova9653 5 років тому +1

    Ochen xorowo obyasnaete . Spasibo bolwoe. Jdem 10 urok😊

  • @ytilizator24
    @ytilizator24 4 роки тому

    спасибо сенсей, обработанную полученную информацию, и отправлю как всегда задание вам, о мой сенсей

  • @ЯКИНаступают
    @ЯКИНаступают 4 роки тому +1

    #потратил не меньше 4-х часов на решение, задача была не из легких (особенно когда не знал как в 1 значении иметь от 1-го значения , и то где хранить данные )
    a = ["first", 1,2,3,4,5,"second",7,8,9, "thir",11,12,13,"fur",15,-16]
    #сюда можно добавлять слова в зависимости от вместимости словаря
    i = 0
    b = 0
    x = 0
    v = 0
    m = 0
    n = {}
    z = ["q","w","e","r","t","y","u","i","o","p"] #вместимость словаря
    print ("вместимость словаря :",len(z)-1,"слов")
    while m < len(a) :
    while i < len(a) and type (a[i]) == str :
    z[x] = []
    n[a[i]]=z[x]
    i +=1
    while i < len(a) and type(a[i])==int :
    z[x].append(a[i])
    if i < len(a):
    i +=1
    else:
    break

    x +=1
    m +=1
    print (n["first"])#поиск по имени
    print (n )# полный словарь

  • @Александр-у2ы8р
    @Александр-у2ы8р 3 роки тому

    Спасибо за вашу работу =) продолжаю изучать новую информацию.

  • @segasey
    @segasey 3 роки тому +5

    Ничего не понятно , но очень интересно!

  • @АртемийКиляков-л7т
    @АртемийКиляков-л7т 5 років тому +7

    Большое спасибо! Все очень ясно и понятно, жду 10 урок

  • @Антон-е3я
    @Антон-е3я 3 роки тому +5

    Задание сложное, новичкам как мне усвоить бы как вы его решаете в этом видео, не то чтобы самому догадаться как нужно его решить.. Логика в целом понятна, но детали.. и самому о них догадаться мне лично пока крайне затруднительно было бы.

    • @Anonymous-fi2dw
      @Anonymous-fi2dw 2 роки тому

      жиза

    • @ІринаМайданюк
      @ІринаМайданюк 2 роки тому

      Да, согласна. Конечно, возможно автор хочет чтобы мы ами нашли информацию в интернете, но тут бы основы выучить и понять. У меня лично с цикла while пошла неразбериха в задачах

  • @alexzdorovennov4035
    @alexzdorovennov4035 4 роки тому +3

    28:00 Может кто-то мне объяснить, пожалуйста, почему в коде написано "if word in my_dict2: ...." . Как я понял, это означает:" Если в my_dict2 есть word, то что-то произойдёт. Но на этот момент же my_dict2 пустой. Или я баран и что-то не понимаю?
    Спасибо

    • @petrenkovl
      @petrenkovl 4 роки тому

      У меня тот же вопрос. Откуда в словаре появились слова, если он инициализируется пустым?

  • @milkiway2678
    @milkiway2678 4 роки тому +10

    Понимаю что я сделал не правильно, но по другому не разобрался)
    d = {'first': [1 , 2, 3], 'second':[10,20], 'third':[15, 56, 70], 'fourth':[-50] }
    print(d)

    • @ДиванныйКритик-к7л
      @ДиванныйКритик-к7л 3 роки тому

      ))))

    • @dsdm407
      @dsdm407 2 роки тому

      Это называется "пойти по пути наименьшего сопротивления". Все мы так решили, хотя бы в первые полмгновения, как услышали условия задачи))

  • @asatrin
    @asatrin 2 роки тому +1

    Мне нравится ваш урок

  • @Igorr911
    @Igorr911 4 роки тому +33

    Ни хрена непонятно , я один такой тупой что ли?(((

    • @АлександрЕгоров-ч7б
      @АлександрЕгоров-ч7б 4 роки тому +23

      нет, он так обучает. дает задачу, говорит что ранее все что нужно для решения он рассказал, начинает писать код и там половину нового......а я ломал голову полчаса.......

    • @felixzhil
      @felixzhil 4 роки тому +13

      нет, мне тоже не понятно. но мне сказал сам автор и еще знакомый из айти, что это всегда так будет) ощущение что ты ничего не понимаешь, а вокруг все такие умные. просто продолжай и все)

    • @user-nd9do2nk2j
      @user-nd9do2nk2j 4 роки тому +2

      чтобы более менее ориентироваться в его уроках порешай интерактивную(если включить пошаговое выполнение кода, то будешь видеть как код ведет себя не каждом этапе) штуку: pythontutor. будет небольшой бэкграунд - будешь воспринимать более менее информацию.

    • @user-nd9do2nk2j
      @user-nd9do2nk2j 4 роки тому +5

      @@felixzhil продолжать не понимать? хороший совет

    • @slava5935
      @slava5935 4 роки тому

      @@user-nd9do2nk2j как включить пошаговое выполнение кода?

  • @geek101grew8
    @geek101grew8 5 років тому +4

    Самый лучший учитель Alishev! А где остальные? Хорошо было бы если дальше выйдет

    • @alishevN
      @alishevN  5 років тому +3

      Скоро начну записывать дальше.

    • @imanazigova8147
      @imanazigova8147 4 роки тому

      alishev здравствуйте! Если можете помогите пожалуйста мне с задачей, я написала код, но не знаю как сделать так чтобы выводились только порядковые номера кратные 3
      Создать файл и записать в него обратные натуральные числа 1, 1/2,...,1/n. Вывести на экран все компоненты файла с порядковым номером, кратным 3. На пайтон. Я все в коде написала только вот не могу сделать там чтобы он выводил компоненты из файла с порядковым номером кратным 3, он у меня все выводит....
      import pickle
      ask = "user.dat"
      n = float(input("n="))
      with open(ask, "wb") as f:
      s = 1;
      while s

  • @ЕгорСемиренко
    @ЕгорСемиренко 4 роки тому +1

    Решил 1 задачу начиная с конца списка, может кому интересно
    a = ['first', 1, 2, 3, 'second', 10, 20, 'third', 44, 543, 333,'fourth', -50]
    d = {}
    e = {}
    b = []
    for i in range (len(a)-1,-1,-1):
    if type(a[i]) == int:
    b.append(a[i])
    else:
    d[a[i]] = b[::-1]
    b = []
    c = list(d)[::-1]
    for i in range (len(c)):
    e[c[i]] = d[c[i]]
    print(e)

  • @gaymonteg7011
    @gaymonteg7011 3 роки тому +1

    посидел над первой задачей часа 3-4. Какие только словари у меня не получались)))) И мешало мне именно то, что я не мог создать переменную без значения и то, что я долго думал, как же добавить в значение к ключу несколько элементов. Хоть убей все прошерстил, но забыл про урок list и упорно его глазами не замечал

  • @DeLanaBo
    @DeLanaBo 3 роки тому

    Спасибо за прекрасные уроки! Условие второй задачи действительно не чётко обозначено. Но она далась легко, а первая... мне было сложно, скажу честно подсмотрела решение.

  • @slava5935
    @slava5935 4 роки тому

    Я все твои уроки за два дня посмотрел, затянуло
    Над каждым сижу думаю, зато всё ясно как божий день

  • @РоманРоманенко-л7р

    Для первой задачи автор предлагает найти решение, которое "должно работать с любыми исходными списками" (14:07). Но решение, которое предлагает автор, работает не со всеми списками! Например, если в списке перед "first" поставить числа, то код не будет работать!

    • @iryna9182
      @iryna9182 3 роки тому +1

      Автор уточняет про патерн чередования: строка - числа.

  • @oxygensss4390
    @oxygensss4390 4 роки тому +4

    еще одно решение 1 задачи:
    a=['first', 1,2,3, 'second', 4,5,6,7, 'third', 1,43,2]
    c={}
    b=[]
    for elem in a:
    if type(elem)==str:
    b.clear()
    v=elem
    if type(elem)==int:
    b.append(elem)
    c[v]=b
    print(c)

    • @MuaddibAtreides
      @MuaddibAtreides 4 роки тому

      я также решил ее)) правда загуглил как очистить массив))

    • @oxygensss4390
      @oxygensss4390 4 роки тому +1

      @@MuaddibAtreides ага, тож часто обращаюсь к гуглу чтобы посмотреть именно методы списков и тд)

  • @ВладКоротких-я5д
    @ВладКоротких-я5д 2 роки тому

    Вот чего добился я, в конце попахивает Hard cod-ом но работает при любых значениях. ЭТО МОЙ ПУТЬ!
    d = {}
    t = []
    j = 0
    q = 0
    for i in range(len(a)-1):
    if type(a[j]) == str:
    d[a[j]] = 1
    t.append(a[j+1])
    j += 1
    else:
    if type(a[j]) == int and type(a[j-1]) == str:
    j += 1
    else:
    if type(a[j]) == int and type(a[j+1]) == int:
    t.append(a[j])
    j += 1
    else:
    t.append(a[j])
    d[a[q]] = t
    j += 1
    q = j
    t = []
    d[a[-2]] = a[-1]
    print(d)

  • @ylyasakmuhammedov1563
    @ylyasakmuhammedov1563 2 роки тому

    a = ["first", 1, 2, 3, "second", 20, 30, "third", 15, 30]
    d = {}
    for element in a:
    if type("s") == type(element):
    key = element
    value = []
    else:
    value.append(element)
    d[key] = value

  • @antantus8351
    @antantus8351 3 роки тому

    Спасибо за труды!

  • @QNikronQ
    @QNikronQ 2 роки тому

    Задание 1
    d = {}
    a = ["first", 1, 2, 3, "second", 10, 20, "third", 15, 56, 70, "fourth", -50]
    key = 0
    for element in range(len(a)):
    if type(a[element]) == str:
    key = a[element]
    l = []
    else:
    l.append(a[element])
    d[key] = l
    print(d)

  • @АндрейБолдин-ы6с
    @АндрейБолдин-ы6с 5 років тому +2

    Супер! Когда ожидать новый выпуск?

  • @uNkindggg
    @uNkindggg 4 роки тому

    В второй задаче. У нас была сначала строка, потом мы в цикле for преобразовали ее в лист, но когда он стал словарем скажите пожалуйста?

    • @aqmoon9889
      @aqmoon9889 4 роки тому

      Он им не стал, просто мы поставили сразу условие, если такого элемента НЕТ в словаре, то мы его достаем из листа как ключ, присваиваем ему значение и тогда он попадает и начинает создавать сам словарь.

    • @uNkindggg
      @uNkindggg 4 роки тому

      @@aqmoon9889 Спасибо брат за отзывчивость, но я уже сам допер)

  • @CurS-uo6wt
    @CurS-uo6wt 8 місяців тому

    Парился над 1 задачкой, решил с помощью зип)
    def funct3():
    keys = ['first', 'second', 'third', 'fourth',]
    values = [1, 2, 3], [10,20], [15,60,70], [-50]
    dictionary = dict(zip(keys, values))
    print(dictionary)
    h7 = funct3()
    print(h7)

  • @merchindoza
    @merchindoza 2 роки тому

    Я немного не понял - задача 2 изначально звучит как - подсчитать количество слов в тексте. Это же считается len(my_text.split(" "))
    А потом уже по ходу обьяснения решения выясняется что надо было посчитать количество слов и количество повторяющихся слов тоже!

  • @serjiodanilenko743
    @serjiodanilenko743 3 роки тому

    вот решил иначе пока не знал что в словарь можно под ключом положить пустой список, всё это уже прошли
    list1 = ['first', 1, 2, 3, 'second', 20,30, 'third', 15, 56, 70, 'fourth', -50]
    my_dict = {}
    cont = None
    my_list= []
    for i in list1:
    if type(i) == str and len(my_list) > 0:
    my_dict[cont] = my_list
    if type(i) == str:
    cont = i
    my_list = []
    else:
    my_list.append(i)
    print(my_dict)
    ps. ребята думайте головой, над реализацией, на мой взгляд пусть она будет даже иной и более ёмкой, зато именно вашей. Далее легче будет въехать и понимать принципы, плюсы и минусы других решений, и юзать лучшие из них в последующих задачах.

  • @cerber9715
    @cerber9715 2 роки тому

    Здравствуйте, в моменте 10:17 вывод: ключ - значение. Не легче было бы просто написать print("Ключ: ",key, " ,значение: ",value), без перевода переменных в тип str. Заранее спасибо!

  • @СорокаНадія-ю7ч
    @СорокаНадія-ю7ч 3 роки тому

    a = ["First", 1, 2, 4, 3, "second", 10, 20, "third", 15, 56, 70, "fourth", -50, 20]
    d = {}
    i = 0
    while i

  • @alexvernua
    @alexvernua 4 роки тому

    Пишу свои решения, до просмотра решений в видео.
    П.С. (после просмотра решений) во второй задаче не слишком очевидно было, что нужно подсчитать количество именно "встреч" слова, задание звучало "подсчитать количество слов в тексте" , формально можно было обойтись одной строкой: print(len(mytext2.split())) . Но уже из логики дальнейшего разъяснения задания стало ясно, что подразумевается именно количество "уникальных" слов в тексте. ))) а то, как известно, без внятного ТЗ, результат - ХЗ
    # Первая задача
    d={}
    a=["first", 1, 2, 3, "second", 10, 20, 50, -20, 20, "third", 15, 56, 70, "fourth", -50, "fifth", 0]
    for i in range(len(a)):
    if type (a[i])==str:
    list=[]
    temp=i+1
    while type(a[temp])==int:
    list.append(a[temp])
    temp+=1
    if temp == len(a):
    break
    d[a[i]]=list
    print(d)
    # Вторая задача
    (попытался в массиве дополнительно подсчитать количество повторений слов)
    mytext="Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет conob asdf fdfd asdf asdf"
    list=mytext.split()
    dic={}
    for i in list:
    num=0
    if i in dic:
    num=dic[i]+1
    dic[i]=num
    else:
    dic[i]=1
    print (len(dic))
    print (dic)

  • @Антон-щ9э
    @Антон-щ9э 2 роки тому

    Для первого задания:
    for elem in a:
    if type(elem) == str:
    s = []
    d[elem] = s
    else:
    s.append(elem)
    чем не вариант?

    • @enver-bey
      @enver-bey Рік тому

      Для вас было легко??

  • @yuriipylypiv2117
    @yuriipylypiv2117 3 роки тому

    Уффф, после трех просмотров видео понял решения.. главное теперь не забыть🙃

  • @АлександрНео-й2ж
    @АлександрНео-й2ж 4 роки тому +1

    Привет. У тебя во 2й задаче (2й вариант), решение выводит правильно только потому что в памяти сохранён my_dict2(из предыдущего решения). Если создать новый словарь my_dict3, то выводит только пустые скобки. Проверил в отдельном файле и действительно решение не работает. В любом случае спасибо за уроки!
    Пример:
    my_text = "Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет"
    my_dict3 = {}
    for word in my_text.split():
    if word in my_dict3:
    my_dict3[word] = my_dict3.get(word, 0) + 1

    print(my_dict3)

  • @Nik_Gor
    @Nik_Gor 4 роки тому

    Я использовал метод count для подсчета количества вхождений слов в список.

  • @ttdarko1642
    @ttdarko1642 4 роки тому +2

    Как новичку первую задачу получилось решить только для конкретных данных. Понимаю, что задачка дается на подумать, но как-то очень неочевидно. На основе изученнего на канале ранее - точно бы не получилось дойти.

    • @alishevN
      @alishevN  4 роки тому +1

      Не согласен с "На основе изученнего на канале ранее - точно бы не получилось дойти". Абсолютно все составляющие решения подробно освещались либо на этом уроке, либо в предыдущих. Я за этим отдельно слежу.

  • @VitaliiKondratiuk-sw5js
    @VitaliiKondratiuk-sw5js 3 роки тому

    2 задание!
    my_text = "Привет как дела сколько дел тут накопилось мне конец и єто правда"
    my_text = my_text.split(" ")
    print(len(my_text))

  • @Vladislav11111
    @Vladislav11111 4 роки тому +5

    Май дикт из биг, май дикт из вери биг (с)

  • @papampapam4748
    @papampapam4748 4 роки тому

    #просто для подсчета слов в строке или файле
    b = 'Пример текста для программы написанной на Питоне'
    v = len(set(b.split()))
    print(v)
    #или, но смотрите, чтобы в винде была галочка "показывать расширения файла", иначе он может у вас называться 123.txt.txt и интерпритатор его не найдет)))
    a = len(set(open(r'c:\temp\123.txt').read().split()))
    print(a)

  • @naviurban2000
    @naviurban2000 4 роки тому

    Можно наверно покороче, но пока так
    a = ["first", 1, 2, 3, "second", 10, 20, "third", 15, 56, 70, "fourth", -50]
    x = {} # создаем пустой словарь
    for i in (a): # узнаем кол-во ключей
    if type(i) == str:
    x[i] = [] # добавляем ключи в словарь
    for key, value in x.items(): # заполняем значение (список) соотв. ключей
    for s in a:
    if key == s: # попадаем на нужное слово в списке a
    p = a.index(key) + 1
    while type(a[p]) != str:
    value.append(a[p])
    p += 1
    if len(a) == p: # проверка чтобы не выскочить за пределы списка a
    break
    print(x) # {'first': [1, 2, 3], 'second': [10, 20], 'third': [15, 56, 70], 'fourth': [-50]}

  • @egorvakulenko6198
    @egorvakulenko6198 5 років тому

    Task_1:
    a = ["first", 1, 2, 3, "second", 10, 20, "third", 15, 56, 70, "fourth", -50]
    hash_map = {}
    for i in range(len(a)):
    key = a[i]
    counter = 0
    if type(key) == str:
    counter = counter + 1
    b = []
    while i + counter < len(a) and type(a[i + counter]) == int:
    b.append(a[i + counter])
    counter = counter + 1
    hash_map[key] = b
    print(hash_map)

    • @sayhellotoroy
      @sayhellotoroy 4 роки тому

      я так замаслал:
      myList: list = ["first", 1, 2, 3, "second", 10, 20, "third", 15, 56, 70, "fourth", -50]
      myMap: dict = {} # ключ слово а значение это список из значений | int, str
      key: str = ""
      value: int = 0
      internalList: list = []
      for element in myList:
      if (type(element) is str):
      key = element
      internalList = []
      continue
      elif (type(element) is int):
      value = element
      internalList.append(value)
      myMap[key] = internalList
      print(myMap) # {'first': [1, 2, 3], 'second': [10, 20], 'third': [15, 56, 70], 'fourth': [-50]}

  • @crypton3569
    @crypton3569 2 роки тому

    a = ["First", 1, 2, 3, "Second", 10, 20, "Third", 15, 56, 70, "Fourth", -50]
    def dictionary(x):
    dic = {}
    for i in x:
    if type(i) == str:
    key = str(i)
    listo = []
    dic[key] = listo
    else:
    listo.append(int(i))
    print(dic)
    dictionary(a)

  • @АндрейДьячков-я7ф
    @АндрейДьячков-я7ф 4 роки тому

    Мой, более длинный вариант решения второй задачи
    # Задача 2 (посчитать кол-во слов в тексте)
    text = 'привет Привет пока арбуз код кот ручка чат слово ещё слово слово слово слово слово слово слово слово'
    slova = text.split(' ')
    d_slova = {}
    temp = 0
    for e in slova:
    if e in d_slova:
    d_slova[e] = d_slova[e] + 1
    else:
    d_slova[e] = temp
    temp += 1
    dlina = len(d_slova)
    print(dlina)
    print(d_slova)

  • @parempoomp8673
    @parempoomp8673 4 роки тому

    d2={'привет':20, 'пока':10}
    if 'привет' in d2:
    print('yes')
    else:
    *error*
    *SyntaxError* : unindent does not match any outer indentation level
    что это за ошибка и как ее решить? пишу в idle python 3.9.0 shell

  • @ФилиппЦ
    @ФилиппЦ 3 роки тому

    Не очень понял, как работает .append для словаря. Можете объяснить пожалуйста логику работы этой функции?
    Логику добавления в обычный список понял, там всё просто.

    • @anynick7587
      @anynick7587 2 роки тому

      еще актуально?

  • @ЕгорЗверев-й8к
    @ЕгорЗверев-й8к 4 роки тому

    Подскажите пожалуйста, условие второй задачки! Не совсем понял, что необходимо сделать!

    • @ЕгорЗверев-й8к
      @ЕгорЗверев-й8к 4 роки тому

      почитал комментарии, вроде понял суть задания, но решение, опять-таки, далеко от изящности...
      my_text = "Иду работать работать работать чтобы потом не работать и тупа кайфовать тупа атдыхать атдыхать работать"
      a = my_text.split()
      d = {}
      for i in range(len(a)):
      counter = 0
      for j in range(len(a)):
      if a[i] == a[j]:
      counter += 1
      d[a[i]] = counter
      print(d)

  • @Tim-chik
    @Tim-chik 3 роки тому

    a=["first",1,2,3, "second", 10,20,"third",4,5,6,"fourth",78,89]
    s=dict()
    for item in a:
    if type(item)==str:
    l = list()
    s[item]=l
    elif type(item)==int:
    l.append(item)
    if type(item)==str:
    break
    print(s)
    результат=
    {'first': [1, 2, 3], 'second': [10, 20], 'third': [4, 5, 6], 'fourth': [78, 89]}

  • @АлександрАлександрович-л3х

    Задача - Посчитать сумму не повторяющихся слов вместе с пробелами
    my_text = 'Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет'
    list_text = my_text.split()
    list_for_sum = []
    for w in list_text:
    if w not in list_for_sum:
    list_for_sum.append(w)
    sum_words_space = len(list_for_sum) + len(list_for_sum) - 1
    print(sum_words_space)
    Ответ - 19

  • @MrTwodi
    @MrTwodi 4 роки тому +17

    пересмотрел 7 раз так и не понял.

  • @yevheniidashchenko4228
    @yevheniidashchenko4228 4 роки тому

    Добрый день! Я не пойму одного. Как программа понимает, что стр именно в ключ надо пихать, а список из чисел - в значение. Может, кто подскажет?

    • @donfedor007
      @donfedor007 4 роки тому

      for in list:
      if type(i) ==str: # это ключ
      pass
      elif type(i) == int: # это значение
      pass
      По типу строчный или числовой

  • @ВладимирКорецкий
    @ВладимирКорецкий 3 роки тому

    А если список начинается с числительных? У меня добавлена строка с проверкой.

  • @donfedor007
    @donfedor007 4 роки тому

    посчитать слова без словаря можно так:
    a = "Приве пока как дела привет привет арбуз слон арбуз стол"
    print (len(a.split(' ')))

  • @ryawav
    @ryawav 3 роки тому

    не знаю мне лично все понятно, замечательно объясняет человек

  • @oleggg
    @oleggg 4 роки тому +2

    28:20 не понятно объяснение. Многие простые вещи объясняешь по многу раз, а вещи посложнее или не явные объясняешь по одному разу или не объясняешь вообще. my_dict2[word] = my_dict2[word] + 1 "мы обращаемся по тому числу которое уже лежит по этому слову"... что?? Выглядит строка либо как добавление ключ:значение в словарь (причем ключ это слово из списка, а значение это это же слово +1), либо меняем слово из списка на это же слово + единица. Бред... Короче лезть гуглить. А когда найду там объяснения и описания всех вопросов - нахрена мне возвращаться сюда?

  • @vv.lyubimov
    @vv.lyubimov 4 роки тому

    Я запутался. Есть команда if e in my_dict: НО словарь my_dict пустой! как переменная 'e' пожет проверить пустой словарь и найти там нужное слово? И ещё страннее то, что команда добавляющая в my_dict переменную 'e' идёт уже после условия. Как так происходит? Объясните логику.

    • @АндрейСвойкин-ь4ь
      @АндрейСвойкин-ь4ь 4 роки тому

      for e in a: - строка, а не "my_dict".
      То есть, сначала, берется первый член из списка "а" - "first" и определяется его тип. Если тип str, то добавляется в словарь my_dict.
      Потом берется второй член из списка "а" - "1", его тип не является "str" поэтому отрабатывается блок else, по которому к созданному ранее ключу добавляется значение. И т.д.
      Мне самому непонятно только одно, как распознается программой, что результат блока else определяется на место значения. Почему не ключа?

    • @slava5935
      @slava5935 4 роки тому

      Как я понял ты о второй задаче.
      По идее переменная "е" проверяет словарь, в котором изначально ничего нет, пропускается первое условие, потому что проверяемого слова там точно нет, и выполняется второе, когда слову присваивается единица. Если следующим будет такое же слово, то выполнится первое условие, по которому к единице из предыдущего цикла прибавляется ещё единица. Получается слово встречается два раза, и в списке значение ключа тоже будет 2. Если слово будет другим, то цикл повториться снова со второго условия.

  • @kvityzgames2407
    @kvityzgames2407 4 роки тому +3

    почему когда вы рассказывали я понимал, а как задачи то все ,ступор?

    • @alishevN
      @alishevN  4 роки тому +4

      Так всегда бывает. Понимать объяснение и уметь делать самостоятельно - это разные вещи. Надо больше практиковаться.

    • @kvityzgames2407
      @kvityzgames2407 4 роки тому

      @@alishevN Спасибо

  • @oups_leveron_crash1639
    @oups_leveron_crash1639 5 років тому +1

    Когда новый урок?

  • @СерегейФирсов
    @СерегейФирсов 5 років тому +1

    Спасибо! Когда новый урок?

  • @natakraft6084
    @natakraft6084 3 роки тому

    Как написать код к задаче?
    Чтоб на консоль выводилось именно то что ниже (новичок)
    Продукт | Количество = Стоимость
    Носки | | 2 = 1000 тенге

  • @maxwellhawk
    @maxwellhawk 3 роки тому

    Кто может подсказать по 1му заданию, я конечно код через задницу написал, и все же его много раз просмотрел, должно работать, но по факту выдает белиберду
    Код
    a = ["1st", 1, 2, 3, "2nd", 5, 87, 74, "3rd", 45, 98, 75, "4th", 7, 3]
    d = {}
    l = []
    for i in a:
    tmp = type(i)
    if tmp == str:
    key = i
    print("key =", key)
    if len(l) > 0:
    while len(l) > 0:
    l.pop()
    else:
    l.append(i)
    d[key] = l
    print(d)
    Ответ
    key = 1st
    {'1st': [1]}
    {'1st': [1, 2]}
    {'1st': [1, 2, 3]}
    key = 2nd
    {'1st': [5], '2nd': [5]}
    {'1st': [5, 87], '2nd': [5, 87]}
    {'1st': [5, 87, 74], '2nd': [5, 87, 74]}
    key = 3rd
    {'1st': [45], '2nd': [45], '3rd': [45]}
    {'1st': [45, 98], '2nd': [45, 98], '3rd': [45, 98]}
    {'1st': [45, 98, 75], '2nd': [45, 98, 75], '3rd': [45, 98, 75]}
    key = 4th
    {'1st': [7], '2nd': [7], '3rd': [7], '4th': [7]}
    {'1st': [7, 3], '2nd': [7, 3], '3rd': [7, 3], '4th': [7, 3]}

    • @maxwellhawk
      @maxwellhawk 3 роки тому

      кароч, перезагрузил PyCharm, стало работать как надо, хотя ниче в коде не менял. PyCharm наверно глючный.

  • @ТимофійГлушко-э9ф
    @ТимофійГлушко-э9ф 2 роки тому

    а что делать если в юпитере нотбук вібивает ошибку 404?

  • @andriirogan3602
    @andriirogan3602 2 роки тому

    d.items() ------> ето же метод словаря а не функция.... да?

  • @bambimbambas
    @bambimbambas 4 роки тому +5

    Вот как я решил)
    1я задача:
    l = ['first', 1, 'second', 1, 2, 4, 8, 'third', -3, 5, 11, 'fourth', 1, 6, 99, -111, 0, 15, 'fifth', 0, 1, 5, -1]
    d = {}
    for i in l:
    if type(i) == str:
    const = i
    l1 = []
    else:
    l1.append(i)
    d[const] = l1
    print(d)
    2я задача:
    s = 'Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет'
    d = {}
    for i in s.split():
    d[i] = s.count(i)
    print(d)

    • @harveyspecter731
      @harveyspecter731 4 роки тому +1

      вторая задачка не совсем верно, так как если в тексте будет скажем слово "дар' он покажет что слово да есть 2 раза хотя там только 1. он делит текст на буквы и отсекает все остальное. то есть при наличие ЭдаЭ в любой части слова, т.е. если там будет слово всегда он сделает +1 к слову да

    • @raibewl3711
      @raibewl3711 4 роки тому

      про count он же не рассказывал
      как ты узнал

    • @musiclifeoffical
      @musiclifeoffical 4 роки тому

      В первой, если список кончиться на строке, она не будет внесена в словарь, так как второе условие не исполниться. Так что правильнее как в видео, т.к логика кода схожа
      я зделал иначе немного
      d={}
      for e in range(len(a)):
      c =[]
      if type(a[e]) == str:
      i = e + 1
      while i

  • @Galim_Madraimov
    @Galim_Madraimov 3 роки тому

    Добрый день
    Хочу воспользоваться подсказкрй в моей конкретной задаче.
    Задаче в том, чтобы создать цикл который будет по требованиям создавать словари с ключами и значениями в общем словаре.
    Пример
    Есть словарь GORODA ={}
    В него нужно помещать другие словари с именами городов
    Например MOSCOW {}
    С ключем "POPULATION" и значением 12000000:
    Пользователь должен по запросу вводить имена городов как ключи и вводить соответствующие значения.
    По завершении написать 'NO' и цикл закончится и выведет словарь с ключами и значениями введённых городов.
    Спасибо большое надеюсь понятно изложил. Прошу хелп.

  • @lokampsokolov
    @lokampsokolov 4 роки тому +2

    С 3.6 словарь является упорядоченным

  • @user-xi1du6rh7r
    @user-xi1du6rh7r 4 роки тому

    9:50 можно было написать print("ключ: {}, значение: {}".format(key, value))

    • @John_Wick_Jr
      @John_Wick_Jr 4 роки тому +1

      print(f'ключ: {key} значение: {value}')

  • @СорокаНадія-ю7ч
    @СорокаНадія-ю7ч 3 роки тому

    my_text = "привет пока как дела привет арбуз велосипед стол как слон арбуз да привет"
    slova = my_text.split()
    d = {}
    for e in slova:
    a = 0
    for p in slova:
    if e == p:
    a += 1
    d[e] = a
    print(d)

  • @Eugene_in_au
    @Eugene_in_au 3 роки тому

    Во втором задании постановка задачи отличается от решения. Ещё не совсем понял - ключи же могут быть только уникальными. Как вообще можно построить словарь на основе повторяющихся ключей? Я на задачу по переименованию повторяющихся слов в строке потратил пару часов

    • @nikolaypirozhkov9786
      @nikolaypirozhkov9786 3 роки тому

      ключи в словаре не повторяются. идет проверка на наличие ключа и увеличивается значение

  • @МаксИ-ъ9т
    @МаксИ-ъ9т 3 роки тому

    А для чего нужен словарь с уникальнымиключами в программировании?

    • @beeqwin
      @beeqwin 3 роки тому

      просто чтобы был

  • @nnnnn477
    @nnnnn477 3 роки тому

    для меня легче вот так сделать:
    my_dict = {}
    current_str = None
    for e in my_list:
    if type(e) == str:
    current_lst = []
    my_dict[e] = current_lst
    current_str = e
    else:
    current_lst.append(e)

    print(my_dict)