#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
…