-1

I have this array:

[{
    'name': 'Chrysanthemum.jpg',
    'number': 100.0
  }, {
    'name': 'Desert.jpg',
    'number': 30.917470438414448
  }, {
    'name': 'Hydrangeas.jpg',
    'number': 15.429520638195438
  },
  {
    'name': 'Jellyfish.jpg',
    'number': 21.331146972809318
  }, {
    'name': 'Koala.jpg',
    'number': 20.341379328776572
  }, {
    'name': 'Lighthouse.jpg',
    'number': 34.424389703830229
  }, {
    'name': 'Penguins.jpg',
    'number': 25.732106503594785
  }, {
    'name': 'Tulips.jpg ',
    'number': 23.827037756867568}]

Now I want to find a item which its number is max. any idea?

dahiya_boy
  • 9,298
  • 1
  • 30
  • 51
newbie
  • 273
  • 2
  • 4
  • 13

4 Answers4

3

You can just use max with a custom key using operator.itemgetter for fetching the number

from operator import itemgetter
max_item = max(l, key=itemgetter('number'))
print(max_item)

Outputs:

{'name': 'Chrysanthemum.jpg', 'number': 100.0}
miradulo
  • 28,857
  • 6
  • 80
  • 93
0
max(d['number'] for d in Array_dict)

output :

100.0

if item :

max(Array_dict, key=lambda x:x['number'])

output :

{'name': 'Chrysanthemum.jpg', 'number': 100.0}
khelili miliana
  • 3,730
  • 2
  • 15
  • 28
0

If your dictionary will be regularly structured like you've shown above, then this should be a simple way of achieving what you need:

max(d['number'] for d in dictionary_list)

juanpa.arrivillaga
  • 88,713
  • 10
  • 131
  • 172
0
dd = [{'name': 'Chrysanthemum.jpg', 'number': 100.0}, {'name': 'Desert.jpg', 'number' : 30.917470438414448}, {'name': 'Hydrangeas.jpg', 'number': 15.429520638195438},  {'name': 'Jellyfish.jpg', 'number': 21.331146972809318}, {'name': 'Koala.jpg', 'number': 20.341379328776572}, {'name': 'Lighthouse.jpg', 'number': 34.424389703830229}, {'name': 'Penguins.jpg', 'number': 25.732106503594785}, {'name': 'Tulips.jpg', 'number': 23.827037756867568}]
lst = []
[lst.append(l.values()[1]) for l in dd]
max_no = max(lst)

for item in dd:
  if item['number'] == max_no:
    print item
    break
SuperNova
  • 25,512
  • 7
  • 93
  • 64