Как извлечь значения, имеющие указанную длину - PullRequest
0 голосов
/ 13 октября 2019

Словарь ниже

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 = {'Male':{'Super':111234}, 'Female':{'Bat':113456}}
#my_dict_list = {'Male':['Super'], 'Female':['Bat']}

Псевдокод

d = {'Male':{}, 'Female':{}}
for i in my:
    if i['UNNO'].startswith('11') and len(i['UNNO'])= 6:
        d['Male'].append(i['Name'])

Ответы [ 2 ]

1 голос
/ 13 октября 2019

Исключительно исходя из вашего ожидаемого результата, вот код:

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']]

        # To get {'Male':{'Super':111234}, 'Female':{'Bat':113456}}
        # d[i['Gender']] = {i['Name']: i['UNNO']}
0 голосов
/ 13 октября 2019

Если я правильно истолковываю это, вы хотите разделить мои данные на мужчин и женщин, если UNNO ​​действителен? Хотя я понятия не имею, что такое #my_dict, поскольку он не появляется в псевдокоде и не соответствует формату моего. Если я правильно угадал таким образом, он создает список женских и мужских записей в словаре d:

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}]

d = {'Male':[], 'Female':[]}
for i in my:
    if str(i['UNNO'])[:2]=='11' and len(str(i['UNNO']))== 6:
        d[i['Gender']].append(i['Name'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...