Словарь ниже
my = [{'Name':'Super', 'Gender':'Male', 'UNNO':111234},
{'Name':'Spider', 'Gender':'Male', 'UNNO':11123},
{'Name':'Bat', 'Gender':'Female', 'UNNO':113456},
{'Name':'pand', 'Gender':'Female', 'UNNO':13456}]
Уникальный номер - это значение ключа "UNNO" для каждого словаря.
Все номера UNNO должны содержать 6 цифр.
Номер UNNO, начинающийся с 11, действителен только
Ожидаемый результат
my_dict_list = {'Male':['Super'], 'Female':['Bat']}
Оригинальный код без регулярных выражений
d = {}
for i in my:
if str(i['UNNO']).startswith('11') and len(str(i['UNNO'])) == 6:
# To get {'Male':['Super'], 'Female':['Bat']}
d[i['Gender']] = [i['Name']]
Как писать с помощью регулярных выражений, пишет обычныевыражение, как дополнить с помощью defaultdict
import re
from collections import defaultdict
# regular expression
rx = re.compile(r'^(?=\d{6}$)(?P<Male>11\d+)|(?P<Female>11\d+)')
# output dict
output = defaultdict(list)