-2

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
  • 8,826
  • 1
  • 29
  • 47
newbie
  • 263
  • 1
  • 4
  • 13

4 Answers4

2

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
  • 26,763
  • 6
  • 73
  • 90
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,537
  • 1
  • 14
  • 25
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
  • 77,035
  • 9
  • 115
  • 152
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
  • 21,204
  • 6
  • 80
  • 55