Форум сайта python.su
							
  0  
								
								Есть два списка разной длины. В первом содержатся ключи, а во втором значения. Напишите функцию, которая создаёт из этих ключей и значений словарь. Если ключу не хватило значения, в словаре должно быть значение None. Значения, которым не хватило ключей, нужно игнорировать.
list_key= 
list_val=
 def create_dict(list_key,list_val): 
    if len(list_key)>len(list_val): 
        while len(list_key)>len(list_val):
              list_val.append(None) 
else: 
    list_val=list_val 
return {key:value for key,value in zip(list_key, list_val)} 
print create_dict(list_key,list_val)
Предположим, у нас есть access.log веб-сервера. Найти десять IP-адресов, от которых было больше всего запросов.
import re
from collections import Counter
# открываем файл в режиме для чтения
with open('access.log') as f:
    # читаем весь файл в переменную
    text = f.read()
# файл закроется сам
# регуляркой находим строки нужного формата
data = re.findall('{1,3}\.{1,3}\.{1,3}\.{1,3}', text)
# у нас есть список
# дальше считаем и берём десять наиболее популярных
for ip, count in Counter(data).most_common(10):
    print(ip)
В системе авторизации есть ограничение: логин должен начинаться с латинской буквы, состоять из латинских букв, цифр, точки и минуса, но заканчиваться только латинской буквой или цифрой; минимальная длина логина — один символ, максимальная — 20. Напишите код, проверяющий соответствие входной строки этому правилу. Придумайте несколько способов решения задачи и сравните их.
import re 
rex1 = re.compile(r'')
rex2 = re.compile(r'^{0,18}$')
 logs = 
 
for log in logs:
    if len(log) == 1:
        print('valid' if re.match(rex1, log) else ‘unvalid’)
    else:
        if log.count('.') > 1 or log.count('-') > 1:
            print('unvalid')
        else:
            print('valid' if re.match(rex2, log) else ‘unvalid’)
valid
unvalid
unvalid
valid
unvalid
valid
unvalid
exit()
import re, time
def valid_one(login):
    t = time.time()
    if re.match('^{0,19}(?<!)$', login):
        rez = ‘valid’
    else:
        rez = ‘unvalid’
    return rez, ‘%f sec.’ % (time.time()-t)
def valid_two(login):
    t = time.time()
    if 1 <= len(login) <= 20 and login.isalpha() and (login.isalpha() or login.isdigit()):
        rez = ‘valid’
        for go in login:
            if not go.isalpha() and not go.isdigit() and go != ‘-’ and go != ‘.’:
                rez = ‘unvalid’
                break
    else:
        rez = ‘unvalid’
    return rez, ‘%f sec.’ % (time.time()-t)
while True:
    login = raw_input (“login:”)
    print ‘Valid_one:’, valid_one(login)
    print ‘Valid_two:’, valid_two(login)
Прикреплённый файлы: 
 Кузнецова А   508М программирование.doc (36,0 KБ)
Офлайн