people = {1: {'Name': 'John', 'Age': '27', 'Sex': 'Male'},
2: {'Name': 'Marie', 'Age': '22', 'Sex': 'Female'}}
I have this nested dictionary. I want to print True if all the values of Age will have a similar value. If any one of the values of Age is different, it will print False. Kindly explain how to do it?
CodePudding user response:
As stated in the comment, you could do:
all_ages_equal = len({d['Age'] for d in people.values()})==1
CodePudding user response:
You can save the first age and then check other Age
is equal to the first or not.
(The first approach with any
, when the generator face to an inequality break, so I think the first approach is faster than creating a set of all elements and then checking the length of set
)
people = {1: {'Name': 'John', 'Age': '27', 'Sex': 'Male'},
2: {'Name': 'Marie', 'Age': '22', 'Sex': 'Female'}}
# first approach
first_age = list(people.values())[0]['Age']
if any(dct['Age'] != first_age for dct in people.values()):
print('different')
else:
print('equal')
# second approach
# Or check with `set` and check length of `set`
if len(set(dct['Age'] for dct in people.values())) > 1:
print('different')
else:
print('equal')
Output:
different
CodePudding user response:
Grab any dictionary item (here, the first value). Compare all ages to the age of that item using all
.
people = {1: {'Name': 'John', 'Age': '27', 'Sex': 'Male'},
2: {'Name': 'Marie', 'Age': '22', 'Sex': 'Female'}}
v0 = list(people.values())[0]
print(all([v['Age'] == v0['Age'] for v in people.values()]))