Python для начинающих. Урок 9: Словари (dict). Решение задач.
HTML-код
- Опубликовано: 28 сен 2024
- ВСЕ ВИДЕО ПО PYTHON: • Python для начинающих
МОЙ КУРС ПО GIT: www.udemy.com/...
ДЛЯ ЖИТЕЛЕЙ РФ: swiftbook.org/...
Реклама и сотрудничество: alishev.neil@gmail.com
1) Плейлист этого курса вот здесь: ruclips.net/p/PLAma_mKffTOSY12JZS6l8lxKCpooPVcrn
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
Если бы жизнь была Python- ом , то я в ней был бы pass-ом
Спасибо за старание! Уважение и огромная благодарность😊
Сказать что тяжело, это ничего не сказать)))
Ву блин, задачки конечно эти сложные. Реально, без просмотра не получается. А после просмотра вроде элементарно. Тяжело одним словом). Тернистым будет путь чувствую)))
Чувствую себя отсталым, но спасибо
ты не один такой
@@ackiid и вас даже ни два
@@vladimirvinogradov6815 множество тупых )))
@@ackiid нужно использовать список!)
@@vladimirvinogradov6815 и я с вами, хрен что поймешь с домашкой
А я понял вторую задачу неправильно))) Подумал, что нужно подсчитать просто количество слов и сильно удивился, когда ты назвал её сложной, ибо же там всё вот так должно быть: print(len(my_text.split())). И только потом допёр, что надо было подсчитать количество повторений каждого слова)))
ахах, плюсую) тоже в строчку записал и думаю что-то тут не так..
Спасибо! Все отлично в этом курсе. Есть предложение - больше реальных кейсов, как задача #convert(miles)
Спасибо огромное за уроки! С первой задачей возникли трудности, но алгоритм выполнения задачи на листе изложил верно, а вот написать программу не хватило знания синтаксиса, хотя мысли были такие как в вашем решении.
Вторую задачу решил практически сразу, (первым способом), но возникли трудности, опять же, не мог понять как в словаре поставить ЗНАЧЕНИЕ +1. Перепробовав множество вариантов ( и почему-то так и не воспользовавшись знанием с прошлых уроков( +=)) я обратился к гуглу и был расстроен узнав, что все намного проще чем я думал.
Респект за труды!
Наиль, привет! Спасибо большое за уроки, они правда стоящие! Действительно, второе задание не совсем корректно дано и я, как многие, просто подсчитал len, глупо радуясь быстрому успеху...)))
Задание сложное, новичкам как мне усвоить бы как вы его решаете в этом видео, не то чтобы самому догадаться как нужно его решить.. Логика в целом понятна, но детали.. и самому о них догадаться мне лично пока крайне затруднительно было бы.
жиза
Да, согласна. Конечно, возможно автор хочет чтобы мы ами нашли информацию в интернете, но тут бы основы выучить и понять. У меня лично с цикла while пошла неразбериха в задачах
Помогите разобраться, в задаче с определением количества слов не понял.
написали цикл
for word in my_text.split():
if word in my_dict2: - почему здесь то проверяем наличие слова в словаре my_dict2, он же ведь еще пустой?
такой же вопрос !
Самый лучший учитель Alishev! А где остальные? Хорошо было бы если дальше выйдет
Скоро начну записывать дальше.
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
Решение задачи номер 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)
посидел над первой задачей часа 3-4. Какие только словари у меня не получались)))) И мешало мне именно то, что я не мог создать переменную без значения и то, что я долго думал, как же добавить в значение к ключу несколько элементов. Хоть убей все прошерстил, но забыл про урок list и упорно его глазами не замечал
Бывает)
Супер! Всё получилось! Но первая задачка заставила прям подумать.
Ни хрена непонятно , я один такой тупой что ли?(((
нет, он так обучает. дает задачу, говорит что ранее все что нужно для решения он рассказал, начинает писать код и там половину нового......а я ломал голову полчаса.......
нет, мне тоже не понятно. но мне сказал сам автор и еще знакомый из айти, что это всегда так будет) ощущение что ты ничего не понимаешь, а вокруг все такие умные. просто продолжай и все)
чтобы более менее ориентироваться в его уроках порешай интерактивную(если включить пошаговое выполнение кода, то будешь видеть как код ведет себя не каждом этапе) штуку: pythontutor. будет небольшой бэкграунд - будешь воспринимать более менее информацию.
@@felixzhil продолжать не понимать? хороший совет
@@user-nd9do2nk2j как включить пошаговое выполнение кода?
Спасибо за вашу работу =) продолжаю изучать новую информацию.
Понимаю что я сделал не правильно, но по другому не разобрался)
d = {'first': [1 , 2, 3], 'second':[10,20], 'third':[15, 56, 70], 'fourth':[-50] }
print(d)
))))
Это называется "пойти по пути наименьшего сопротивления". Все мы так решили, хотя бы в первые полмгновения, как услышали условия задачи))
20:48 немного не честные условия. Я решил задачу немного другим способом, не знал что можно сразу добавлять через append в словарь ключи, поэтому сделал через две временные переменные, которые потом добавлялись как пара ключ-значение.
Такая же история :)
так мы не относительно словаря делаем .append, а относительно списка
#потратил не меньше 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 )# полный словарь
Вторая задача, решение с использованием 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
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)
Вот еще способ решения первой задачи, боле проще , как по мне
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
Спасибо за прекрасные уроки! Условие второй задачи действительно не чётко обозначено. Но она далась легко, а первая... мне было сложно, скажу честно подсмотрела решение.
Я немного не понял - задача 2 изначально звучит как - подсчитать количество слов в тексте. Это же считается len(my_text.split(" "))
А потом уже по ходу обьяснения решения выясняется что надо было посчитать количество слов и количество повторяющихся слов тоже!
28:00 Может кто-то мне объяснить, пожалуйста, почему в коде написано "if word in my_dict2: ...." . Как я понял, это означает:" Если в my_dict2 есть word, то что-то произойдёт. Но на этот момент же my_dict2 пустой. Или я баран и что-то не понимаю?
Спасибо
У меня тот же вопрос. Откуда в словаре появились слова, если он инициализируется пустым?
Парился над 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)
Задание 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)
за my_dict лайк )
Решил 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)
Я использовал метод count для подсчета количества вхождений слов в список.
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)
a = ["First", 1, 2, 4, 3, "second", 10, 20, "third", 15, 56, 70, "fourth", -50, 20]
d = {}
i = 0
while i
Добрый день
Хочу воспользоваться подсказкрй в моей конкретной задаче.
Задаче в том, чтобы создать цикл который будет по требованиям создавать словари с ключами и значениями в общем словаре.
Пример
Есть словарь GORODA ={}
В него нужно помещать другие словари с именами городов
Например MOSCOW {}
С ключем "POPULATION" и значением 12000000:
Пользователь должен по запросу вводить имена городов как ключи и вводить соответствующие значения.
По завершении написать 'NO' и цикл закончится и выведет словарь с ключами и значениями введённых городов.
Спасибо большое надеюсь понятно изложил. Прошу хелп.
вот решил иначе пока не знал что в словарь можно под ключом положить пустой список, всё это уже прошли
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. ребята думайте головой, над реализацией, на мой взгляд пусть она будет даже иной и более ёмкой, зато именно вашей. Далее легче будет въехать и понимать принципы, плюсы и минусы других решений, и юзать лучшие из них в последующих задачах.
Здравствуйте, в моменте 10:17 вывод: ключ - значение. Не легче было бы просто написать print("Ключ: ",key, " ,значение: ",value), без перевода переменных в тип str. Заранее спасибо!
Для первого задания:
for elem in a:
if type(elem) == str:
s = []
d[elem] = s
else:
s.append(elem)
чем не вариант?
Для вас было легко??
Для первой задачи автор предлагает найти решение, которое "должно работать с любыми исходными списками" (14:07). Но решение, которое предлагает автор, работает не со всеми списками! Например, если в списке перед "first" поставить числа, то код не будет работать!
Автор уточняет про патерн чередования: строка - числа.
d.items() ------> ето же метод словаря а не функция.... да?
почему когда вы рассказывали я понимал, а как задачи то все ,ступор?
Так всегда бывает. Понимать объяснение и уметь делать самостоятельно - это разные вещи. Надо больше практиковаться.
@@alishevN Спасибо
честно ломаю голову над домашним заданием, без подглядываний. (остановил на паузу) И пока неочень ((( Проблема там, ни так в словаре, а в том, пока, как вытащить из смеси в отдельные листы (лист ключ, и к нему лист значения) и вообще можно листы добавлять в словарь?
не понял зачем глобал переменная None, если и без нее всэр прекрасно работает?
Ваще невозможно решить, если начинающий и с нулевым опытом программирования... Догадался только, что надо создать пустой словарь, наверное будет нужна переменная, в которую складываем значения из списка, ну и цыкл for... Совсем тугодум. )))
Круто! Но спринг лучше =)))))
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
Ещё уроков запили, плииииииииз
я не совсем понял задание и посчитал. общее количество слов, и сколько раз слово встречается после себя.
a= 'Привет пока как дела привет Привет арбуз стол как арбуз'
my_list=a.split()
d={}
k=0
for i in range (len(my_list)):
d[i]=my_list[i]
print("Общее количество слов:", len(d))
for i in range(len(d)):
for j in range (i+1, len(d)):
if d[i] == d[j]:
k+=1
print(f'Слово : "{d[i]}", встречается : {k}')
k=0
Надо было повторные считать)
Может это не моё?! На практике решения такие элементарные, но в моих попытках это были "супер конструкции", которые не работали.
По итогу: первая задача для новичка сложна настолько, что непонятны даже последующие объяснения; ТЗ второй задачи поставлено неверно, но объяснение чуть понятнее, чем у первой. В целом чувствуешь себя неспособным к решениям.
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)
спасибо
Я запутался. Есть команда if e in my_dict: НО словарь my_dict пустой! как переменная 'e' пожет проверить пустой словарь и найти там нужное слово? И ещё страннее то, что команда добавляющая в my_dict переменную 'e' идёт уже после условия. Как так происходит? Объясните логику.
for e in a: - строка, а не "my_dict".
То есть, сначала, берется первый член из списка "а" - "first" и определяется его тип. Если тип str, то добавляется в словарь my_dict.
Потом берется второй член из списка "а" - "1", его тип не является "str" поэтому отрабатывается блок else, по которому к созданному ранее ключу добавляется значение. И т.д.
Мне самому непонятно только одно, как распознается программой, что результат блока else определяется на место значения. Почему не ключа?
Как я понял ты о второй задаче.
По идее переменная "е" проверяет словарь, в котором изначально ничего нет, пропускается первое условие, потому что проверяемого слова там точно нет, и выполняется второе, когда слову присваивается единица. Если следующим будет такое же слово, то выполнится первое условие, по которому к единице из предыдущего цикла прибавляется ещё единица. Получается слово встречается два раза, и в списке значение ключа тоже будет 2. Если слово будет другим, то цикл повториться снова со второго условия.
Отличные уроки! Будет ли продолжение по Python?
Да
@@alishevN когда
Можете обяснить решение 1 задачи пожалуйста,в которий раз пересматриваю не врубаюсь
создаем временную переменную, в которой храним список для ключа, затем обращаемся к этому списку и добавляем численные элементы
a = ['First' , 1 , 2 ,3 , "second" ,10 , 20 , "third" , 15 , 56, 70 , "forth" , -50 ]
my_dict = {}
tanuha = None
for k in a:
if type(k) == str:
my_dict[k] = [] # пустой список для значений ключа
tanuha = k # временная переменная для хранения списка
else:
my_dict[tanuha].append(k) #сохраняя для значения словаря список, мы можем к нему обращаться как к списку.
print(my_dict)
просто создать временный список
Проще и короче решение первой задачи не смог придумать, увы
a = ['first', 21, 'second', -541, 1, 'third', 'fourth', -50, 9]
d = {}
for i in range(len(a)):
if type(a[i]) == str and type(a[i+1]) == int:
a2 = []
x = 1
while i+x < len(a) and type(a[i+x]) != str:
a2.append(a[i+x])
d[a[i]] = a2
x += 1
elif type(a[i]) == str and type(a[i+1]) == str: # код на случай, если есть
d[a[i]] = [] # подряд идущие строки
print(d)
Ставь лайк, если решил вторую задачу третьим способом с помощью вложенyых циклов for
А как усложнить задачу? Хочу вывести самое популярное слово в тексте
Надо пройтись по словарю и посмотреть, у какого слова наибольший счётчик
ассоциативный массив это называется
В пайтоне dictionary
Мне было нечего делать и решил сделать простой шифратор:
alphabet_proper = ['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']
alphabet_proper.reverse()
alphabet_reverse = alphabet_proper
alphabet_proper = ['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']
dict = {}
z = 0
for k in alphabet_proper:
while True:
dict[k] = alphabet_reverse[z]
z += 1
break
dict[' '] = ' '
print('Напиши текст без знаков препинания и он будет зашифрован')
reply = list(input('Ваш текст(на английском): ')) #писать только маленькими буквами
print('Зашифрованная версия:', end = ' ')
for z in reply:
print(dict[z], end = '')
my_text = "Привет пока как дела привет привет арбуз велосипед стол как арбуз да привет"
slovar = {}
for e in my_text.split(" "):
slovar[e] = []
print(slovar)
len(slovar)
a = ['first', 1, 2, 3, 'second', 10, 20, 'third', 15, 56, 70, 'fourth', -50]
my_dict = {}
current_str = None
for e in a:
if type(e) == 'str':
my_dict[e] = []
current_str = e
else:
my_dict[current_str].append(e)
print(my_dict)
Traceback (most recent call last):
File
my_dict[current_str].append(e)
KeyError: None
Что не так
ура!
когда новые видосики? (
Решил данную задачу следующим способом :
pustoi = []
my_text = 'один два три четыре пять шесть четыре три один ноль'
list_my_text = my_text.split(' ')
summa = 0
unuque_summa = 0
print ('Список с повторяющимися значениями:')
print (list_my_text)
for word in list_my_text:
if word not in pustoi:
pustoi.append(word)
print ('Список с уникальными значениями:')
print (pustoi)
for word_calc in list_my_text:
if word_calc in list_my_text:
summa = summa + 1
print ('Сумма всех значений строки = '+ str(summa))
for word_calc_unique in pustoi:
if word_calc_unique in pustoi:
unuque_summa = unuque_summa + 1
print ('Сумма уникальных значений строки = '+ str(unuque_summa))
Как вы считаете нормально или нет?
запустил твой код. выводится не совсем корретный результат:
Список с повторяющимися значениями:
['один', 'два', 'три', 'четыре', 'пять', 'шесть', 'четыре', 'три', 'один', 'ноль']
Список с уникальными значениями:
['один', 'два', 'три', 'четыре', 'пять', 'шесть', 'ноль']
Сумма всех значений строки = 10
Сумма уникальных значений строки = 7
получается, что в списке с повторяющимися значениями есть "пять" и "шесть" которые не повторяются.
Кстати, как успехи спустя год? программистом работаешь? напиши, если будет свободная минука.
@@ЕвгенийСидоров-ч9и не совсем для кодинга учил пайтон, скорее для создания собственных систем анализа данных, но отложилось все в ящик тк есть более простые решения как power bi и тд, но после твоего комментария начал задумываться о возобновлении обучения🙃
words="Hello my friend and brother but brother can be my friend and can not be a sister if say hello my brother it was equal that I said hello my friend"
my_dict={}
listWord=words.split()
for w in listWord:
my_dict[w]=my_dict.get(w,0)+1
#print(w,"= ",my_dict[w]) comment out this statement, because it was a verifying print out
print(my_dict)
{'Hello': 1, 'my': 4, 'friend': 3, 'and': 2, 'brother': 3, 'but': 1, 'can': 2, 'be': 2, 'not': 1, 'a': 1, 'sister': 1, 'if': 1, 'say': 1, 'hello': 2, 'it': 1, 'was': 1, 'equal': 1, 'that': 1, 'I': 1, 'said': 1}
выбивает
когда новый урок? хотелось бы раз в неделю получать
Не совсем понял как оно получилось, но решил так:
for e1 in my_text.split():
d1[e1] = my_text.split().count(e1)
почему он ключи не повторяет - для меня загадка
чувствую себя тупицей, со своим решением 1й задачи, за 2ю пока еще не взялся)
gist.github.com/TommyTheMob/51d59821c67604202a644e1f925775ee
Я не понял второе задание)). Нужно посчитать количество слов просто или уникальных слов или что?) Надеюсь на чей-нибудь ответ - и завтра попробую сделать - решение пока смотреть не хочу. Хочу сам попробовать)
@@ЕгорЗверев-й8к Нужно подсчитать количество уникальных слов
посоветуйте другие курсы, я не понимаю этого чувака, зачем он это делает! 🤣
Блэт... опять не понятно, для чего словарь 🤣
Чувак игру пытается сделать или что?
a = ['first', 1,2,3,4,7,8,9,10, 'second', 10,20, 'five', -50]
a_dict = {}
for i in a:
if type(i) == str:
key = i
a_dict[key] = []
list_val = []
elif type(i) == int:
list_val.append(i)
a_dict[key] = list_val
print(a_dict)
Мой вариант как для начинающего
Самый лучший урок это практика. Хотелось бы каких либо супер лёгких задачек.
да не то слово)
@D1en я аналогично как и вы не могу понять туго как то прямо
Со второй задачей, где нужно было посчитать слова - не сразу понял задание. Под посчитать слова я сначала подумал, что нужно просто посчитать кол-во слов, то есть например если их суммарно 16, то нужно это выяснить. Когда начал смотреть решение, понял, что что-то не так сделал. По первым словам решения подумал, что нужно создать словарь, в котором у каждого нового слова будет свой номер, и нужно посчитать кол-во уникальных слов. Сделал. И это было снова не то :D
Было бы неплохо объяснить необходимый результат на примере, чтобы видеть, что должно получиться
Ты ни один такой. Я тоже подумал про общее количество
my_text = 'Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет'
print (my_text.split())
len (my_text.split())
p= len (my_text.split())
print ('В этом списке ' + str(p) + ' cлов' )
но по сути все верно, он дал задачу а ты решил даже больше, значит урок дал результат)
а каково условие второго задания в итоге? я тоже не понял, но решение смотреть не хочу, хочу сам сделать)
аналогично понял задание, автору спасибо, но ставить задачу нужно точнее ))
Ход моих мыслей был абсолютно идентичен твоему) Сделав задание по первому сопособу подумал, не омжет же быть так просто да и словарь тут не нужен, начал смотреть решение, подумал, видимо нужно посчитать количество уникальных слов -
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)) + ' уникальных слов')
Но все равно не понятно, причем тут словари? Смотрю дальше, а оказывается нужно было посчитать количество повторений слов...
Наиль, все ждут 10 урок. Уже больше 5 месяцев прошло.. Не подведи родной
пересмотрел 7 раз так и не понял.
А что не понятного?
Вторая задача new_slovar = {i: n.split().count(i) for i in n.split()}
Май дикт из биг, май дикт из вери биг (с)
28:20 не понятно объяснение. Многие простые вещи объясняешь по многу раз, а вещи посложнее или не явные объясняешь по одному разу или не объясняешь вообще. my_dict2[word] = my_dict2[word] + 1 "мы обращаемся по тому числу которое уже лежит по этому слову"... что?? Выглядит строка либо как добавление ключ:значение в словарь (причем ключ это слово из списка, а значение это это же слово +1), либо меняем слово из списка на это же слово + единица. Бред... Короче лезть гуглить. А когда найду там объяснения и описания всех вопросов - нахрена мне возвращаться сюда?
Да, со второй задачей - не правильно, или даже не точно был задан вопрос. Нужно было наверное сказать - сколько каждого слова в списке. А то я так же как и многие (судя по отзывам) посчитал общее кол-во слов и уникальных слов )
Превосходный паттерн изложения: Теория -> Задача -> Пауза -> Анализ решения задачи. Спасибо! Вы, как и всегда, на высоте!
Ждёём продолжение курса по Python !!
Ничего не понятно , но очень интересно!
Классно! Очень классная подача, всё, действительно понятно! И отличная идея с задачей, решать её в видео после паузы!
Ты лучший !!!
Ура новый урок
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)
чуть по другому зделал 1 но тот же результат
d={}
for e in range(len(a)):
c =[]
if type(a[e]) == str:
i = e + 1
while i
Слушай, я 2 задачи решил через цикл в цикле )))) Но твое решение по задачам конечно выглядит элегантнее ) Хоть мое и не такое изящное - но рад что сам решил без подсказки твоей :) И да - решение второй задачи я ещё не посмотрел :)
Как новичку первую задачу получилось решить только для конкретных данных. Понимаю, что задачка дается на подумать, но как-то очень неочевидно. На основе изученнего на канале ранее - точно бы не получилось дойти.
Не согласен с "На основе изученнего на канале ранее - точно бы не получилось дойти". Абсолютно все составляющие решения подробно освещались либо на этом уроке, либо в предыдущих. Я за этим отдельно слежу.
С 3.6 словарь является упорядоченным
Мне нравится ваш урок
Я поставил ей 1000000
Довольно забавные ощущения, имеется небольшой опыт в других языках программирования.
Начинаешь решать все сам, делаешь все красиво. Чувство гордости все дела )
Потом открываешь решение и понимаешь что можно было сделать в 2 строчки и не вводить лишние переменные или циклы итд.
Очень познавательно и интересно. Спасибо что каждый раз получается понять что то новое!
жиза
Привет. У тебя во 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)
интересное решение задачи через цикл 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)))
C:\Users\User\PycharmProjects\forlooppython\venv\Scripts\python.exe C:/Users/User/PycharmProjects/forlooppython/main.py
Traceback (most recent call last):
File "C:\Users\User\PycharmProjects\forlooppython\main.py", line 10, in
my_dict[e] = []
TypeError: 'tuple' object does not support item assignment
У меня такая ошибка выходит
Хочу быть функцией pass
))
Мой, более длинный вариант решения второй задачи
# Задача 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)
Задача номер #2
from collections import Counter
my_text = 'арбуз шампиньён хуй мочка рыгота даун даун Арбуз '
v=(my_text.title()) #все слова с заглавной
spl = (v).split() #перенос строки в список
cnt=Counter(spl) #создание пары ключ-значение из списка в словарь
print(cnt)
(Он ведь не говорил что нельзя просто все слова начать делать с заглавной)