如何使用与另一个列表的比较对列表中的字典进行排序

时间:2014-08-03 04:23:44

标签: python list dictionary

我正在开发一个更大的程序,需要对一个词典列表进行排序。我使用单独列表中的整数值,并将它们与每个字典中与特定键相关联的值进行比较。我对此结果搞砸了,我不知道为什么......帮助!

我的代码:

    new_list_of_dictionaries = []
    b = [{1: 'one', 'sam': '2,300'}, {3: 'thee', 'sam': '4,000'}]
    list_of integers = [2300, 2300]

    for i in list_sof_integers:

        for a_dictionary in b:
            r = a_dictionary["sam"].replace(',','')
            #print r
            #r2 = r.replace(',','')
            #print r2

            if i == int(r):
                new_list_of_dictionaries.append(a_dictionary)

            print new_list_of_dictionaries

1 个答案:

答案 0 :(得分:0)

看起来您正在根据单独列表中的数字过滤字典列表。你可以使用列表理解,过滤条件如下

[c_dict for c_dict in b if int(c_dict["sam"].replace(',','')) in list_of_ints]

in运算符将在list_of_ints中查找整数值。如果你想加快速度,你可以将list_of_ints转换成一个集合,就像这样

set_of_ints = set(list_of_ints)
[c_dict for c_dict in b if int(c_dict["sam"].replace(',','')) in set_of_ints]