On Sun, Aug 14, 2016 at 2:21 PM Atri Mahapatra <atri.mahapa...@gmail.com> wrote:
> I have a list of dictionaries which look like this: > [{'Width': 100, 'Length': 20.0, 'Object': 'Object1'}, {'Width': 12.0, > 'Length': 40.0, 'Object': 'Object2'}...... so on till 10] > > I would like to find the first index in the list of dictionaries whose > length is greater than a particular value > > f=lambda seq, m: [ii for ii in range(0, len(seq)) if seq[ii]['Length'] > > m][0] and it throws an error > > can anyone suggest a way to do it? > There's no need to play code golf (squishing your thoughts into one line). def index_of_first_record_of_minimum_size(records, m): 'records is an iterable of dictionaries' for i, dictionary in enumerate(list_of_dicts): if dictionary['Length'] > m: return i raise ValueError('no record found with "Length" greater than %r' % (m,)) If you have trouble coming up with a good name for a function, that suggests you are either doing too much or too little with that function. If you want the same task outside of a function, change the return to a break. if not records: raise ValueError('no records found') for index, d in enumerate(records): if d['Length'] > m: break # `index` is now the index of the first record of minimum length else: raise ValueError('no record found with "Length" greater than %r' % (m,)) -- https://mail.python.org/mailman/listinfo/python-list