sort a Dict on alphabet by name in python -
have dict values(string)- name , number's (int).
i want dict sorted name.
have:
sorted(dictlist, key = lambda (k,v): v['name']) but - "string indices must intergers, not str".
def to_dict(lstdata) : dct = dict(); dctdata in lstdata : dct[dctdata['id']] = dctdata['name']; return dct; units = to_dict(db.getunits()); sorted(units, key = lambda k: units[k]['name']); if run- sorted(dctunits, key= lambda x:x[1])
i get: 'long' object unsubscriptable.
it sorting on wrong value. in (x=1l)
builtin sorted = <built-in function sorted>, global dctunits = {1l: 'kg', 2l: 'day', 3l: 'week', 4l: 'month', 5l: 'g/l', 6l: 'ug/dl', 7l: 'ng/ml', 8l: 'year', 9l: 'min/day', 10l: 'cm', ...}, key undefined, x = 1l x should 'kg'..
what i'm missing?
you doing lambda wrong, can either sort dictionaries keys, or values, or sort key value pairs.
(assuming dict dictionary)
by keys:
sorted(dict.keys(), key=lambda k: dict[k]['name']) # return list of keys, sorted value of 'name' by values:
sorted(dict.values(), key=lambda v: v['name']) # return list of values, sorted value of 'name' by pairs:
sorted(dict.items(), key=lambda (k, v): v['name']) # return list of key value pairs, sorted value of 'name'
Comments
Post a Comment