angree77Даже близко не гуру, но могу попробовать подсказать - метод isdigit ))
Уважаемые гуру питона подскажите как в строке подаваемой из вне отличить цифру от буквы?
angree77Даже близко не гуру, но могу попробовать подсказать - метод isdigit ))
Уважаемые гуру питона подскажите как в строке подаваемой из вне отличить цифру от буквы?
Egorro13Спасибо друг, второй раз выручаешь )))
Даже близко не гуру, но могу попробовать подсказать - метод isdigit
string = ['A', 'v', 'c']
integ = [54, 253, 3]
integ = [5, 4, 2, 5, 3, 3]
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Как вариант, отсортировать ключи в нужном порядке в отдельный список, с помощью этого списка доставать значения в интересующем порядке. Плюс в collections есть специальный класс OrderedDict с возможностью сортировки именно самого словаря
Други, столкнулся с очередной проблемкой сортировка словаря, надо отсортировать словарь по убыванию значений…
Egorro13Друг в качестве ключей используются строковые переменные, слова из текстового файла, а в качестве значений кол-во повторений в тексте… вариант с сортировкой по ключам ну ни как не подходит, только по значениям, т.е. выход был один преобразовать словарь в кортеж и в кортеже уже делать с ним что хошь
Как вариант, отсортировать ключи в нужном порядке в отдельный список, с помощью этого списка доставать значения в интересующем порядке. Плюс в collections есть специальный класс OrderedDict с возможностью сортировки именно самого словаря
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]}')
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) #промежуточный вывод того что насчиталось