проверьте, есть ли в списке диктант по возрастанию, и верните неправильный диктант

#python #dictionary

Вопрос:

Дикт ниже приведен только для примера.:

 a = [{'name':'sally','age':'31'},{'name':'greg','age':'30'},{'name':'josh','age':'32'},{'name':'bobby','age':'33',]
 

Порядок диктанта должен соответствовать возрасту. Поэтому мне нужно проверить, в порядке ли диктант или нет, и напечатать их «имя», если возраст не в порядке.

То, что я сделал до сих пор, было отсортировано по списку диктантов в соответствии с их возрастом (по возрастанию).

 sorted_age = sorted(a, key=lambda d: d['age'])
 

и сравните оба диктанта, чтобы увидеть, равны они или нет.

  if a == sorted_age:
            continue
        else:
            print(False)
 

Мне нужно напечатать «салли» и «грег», так как их возраст не в порядке. и я не знаю, как напечатать их имя

Ответ №1:

Вы можете использовать zip :

 [(a, b) for a, b in zip(data, data[1:]) if a['age'] > b['age']]
 

 [({'name': 'sally', 'age': '31'}, {'name': 'greg', 'age': '30'})]
 

Ответ №2:

Просто повторите диктанты:

 for da, ds in zip(a, sorted_age):
    if da != ds:
        print(da['name'])
print('are not in order')
 

Комментарии:

1. Понижающий голос принадлежал не мне, но я замечаю, что 'are not in order' он печатается независимо от того, были ли какие-либо неупорядоченные записи или нет.

2. Ну, я предполагал, что ты поставишь это вместо print(False) того, когда ты уже знаешь a != sorted_age