-1

値(文字列)-名前と番号(int)のdictを持っています。

辞書を名前でソートしたい。

もつ:

sorted(dictList, key = lambda (k,v): v['name'])

しかし、get - 「文字列インデックスは、str ではなく、整数でなければなりません」。

def to_dict(lstData) :
    dct = dict();
    for dctData in lstData :
        dct[dctData['id']] = dctData['name'];
    return dct;


Units = to_dict(db.getUnits());
sorted(Units, key = lambda k: Units[k]['name']);

sorted(dctunits, key= lambda x:x[1]) を実行した場合

私は得る: 'long' object is unsubscriptable.

間違った値でソートしています。中 (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は「Kg」でなければなりません..

私が見逃しているのは何ですか?

4

2 に答える 2

3

Lambda を間違って実行しています。辞書のキーまたはその値を並べ替えるか、キーと値のペアで並べ替えることができます。

dict(あなたの辞書であると仮定します)

キー別:

sorted(dict.keys(), key=lambda k: dict[k]['name'])
# will return a list of the keys, sorted by the value of 'name'

値別:

sorted(dict.values(), key=lambda v: v['name'])
# will return a list of the values, sorted by the value of 'name'

ペアで:

sorted(dict.items(), key=lambda (k, v): v['name'])
# will return a list of the key value pairs, sorted by the value of 'name'
于 2013-05-20T07:55:20.583 に答える