Форум сайта python.su
angree77Даже близко не гуру, но могу попробовать подсказать - метод isdigit ))
Уважаемые гуру питона подскажите как в строке подаваемой из вне отличить цифру от буквы?
Офлайн
Egorro13Спасибо друг, второй раз выручаешь )))
Даже близко не гуру, но могу попробовать подсказать - метод isdigit
string = ['A', 'v', 'c']
integ = [54, 253, 3]
integ = [5, 4, 2, 5, 3, 3]
Отредактировано angree77 (Май 7, 2019 18:04:38)
Офлайн
angree77Судя по всему, проверяешь каждый отдельный символ, если он цифра - эту цифру в список и добавляешь. А надо тогда уж проверять следующий, если он тоже цифра - прибавлять к текущему в какой-то временной строке, если не цифра - преобразовывать строку в число и помещать в список, строку обнулять для поиска следующего числа. Или проще и короче через регулярку:
так вот я к чему проверяя методом isdigit в этом же цикле получаем совершенно другой список integ
import re s = input() for m in re.findall("\d+", s): print(int(m))
Офлайн
angree77
Например имеется строка типа a32B103c4N5, и надо ее распаковать т.е. операция со строковыми переменными
>>> import re >>> >>> s = 'a32B103c4N5' >>> >>> out = [(i, int(j)) for i, j in re.findall(r'(\D+)(\d+)', s)] >>> out [('a', 32), ('B', 103), ('c', 4), ('N', 5)] >>>
Офлайн
Други, столкнулся с очередной проблемкой сортировка словаря, надо отсортировать словарь по убыванию значений…
Вроде как получилось
list_d = list(d.items())
print(list_d)
list_d.sort(key=lambda i: i[1], reverse=True)
for i in list_d:
print(i[0], i[1])
Отредактировано angree77 (Май 8, 2019 15:57:43)
Офлайн
angree77Как вариант, отсортировать ключи в нужном порядке в отдельный список, с помощью этого списка доставать значения в интересующем порядке. Плюс в collections есть специальный класс OrderedDict с возможностью сортировки именно самого словаря
Други, столкнулся с очередной проблемкой сортировка словаря, надо отсортировать словарь по убыванию значений…
Офлайн
Egorro13Друг в качестве ключей используются строковые переменные, слова из текстового файла, а в качестве значений кол-во повторений в тексте… вариант с сортировкой по ключам ну ни как не подходит, только по значениям, т.е. выход был один преобразовать словарь в кортеж и в кортеже уже делать с ним что хошь
Как вариант, отсортировать ключи в нужном порядке в отдельный список, с помощью этого списка доставать значения в интересующем порядке. Плюс в collections есть специальный класс OrderedDict с возможностью сортировки именно самого словаря
Офлайн
Здравствуйте) я недавно открыла свой интернет-магазин, нахожусь в стадии начального развития) буду рада видеть всех вас в качестве подписчиков в своей группе https://vk.com/club181034237)
Офлайн
angree77Примерно набросал, о чем речь: skeys - отсортированный по значениям словаря (случайным числам от 0 до 100) список ключей этого словаря, в цикле выводится тот же словарь, но уже в “отсортированном” виде (хотя сам словарь фактически и не сортируется:
Друг в качестве ключей используются строковые переменные, слова из текстового файла, а в качестве значений кол-во повторений в тексте… вариант с сортировкой по ключам ну ни как не подходит, только по значениям, т.е. выход был один преобразовать словарь в кортеж и в кортеже уже делать с ним что хошь
import random d = dict() for i in range(10): d[f'key{i}'] = random.randint(1, 100) print(d) skeys = sorted(d, key=lambda k: d[k]) # сортировка - по значению (d[k]) for k in skeys: print(f'{k}: {d[k]}')
Офлайн
Други помогите, глаз чего то совсем замылился.. решаю задачку на вход поступает кол-во игр сыгранных футбольной командой и количество забитых голов в следующем формате
3
Зенит;3;Спартак;1
Спартак;1;ЦСКА;1
ЦСКА;0;Зенит;2
надо текущий формат преобразовать к следующему
Команда:Всего_игр Побед Ничьих Поражений Всего_очков
Зенит:2 2 0 0 6
ЦСКА:2 0 1 1 1
Спартак:2 0 1 1 1
очки начисляются по следующей схеме за победу 3, за ничью 1, и за проигрыш 0
Сделал через словарь, т.е. команды поставил в качестве ключей, а остальное обсчитываю по ходу дела
столкнулся с трудностью не получается посчитать кол-во побед и поражений
raw = int(input())
check = []
dt = {}
for i in range(raw): # input data
gol = input().split(';')
check += [gol]
col = len(check[0])
for i in range(raw):#преобразование к числам голов
for j in range(1, col, 2):
check[i][j] = int(check[i][j])
for i in range(raw):# создание словаря с командами
for j in range(0, col, 2):
if check[i][j] not in dt:
dt[check[i][j]] = []
#print(dt) #промежуточная проверка как создался словарь
game = 0
win = 0
loss = 0
for i in range(raw): #подсчет кол-ва игр сыгранных каждой командой
for j in range(0, col, 2):
if check[i][j] in dt:
game += 1
dt[check[i][j]].append(game)
game = 0 #обнуляем счетчик игр для следующей команды
# Не понятный момент для меня или кол-во голов засунуть в словарь и дальше работать только со словарем или мозговать как причесать то что ниже
for key in dt:
for i in range(raw):
for j in range(col):
if key == check[i][j] and check[i][1] > check[i][3]: # сравнение если больше то победа
win +=1
if key == check[i][j] and check[i][1] < check[i][3]:# если меньше то проигрыш
loss +=1
dt[key].append(win)
dt[key].append(loss)
win = 0
loss = 0
print(dt) #промежуточный вывод того что насчиталось
Офлайн