从字典列表中创建具有特定值的列表(键为字符串和值是整数列表)

时间:2020-09-17 15:52:53

标签: python string list dictionary

我有一个带有字符串的字典列表和一个字符串列表作为它们各自键的值:

list_of_dictionaries = [
    {'id': 'ABBA', 'num': ['10', '3', '5', '1']},
    {'id': 'ABAC', 'num': ['4', '5', '6', '20']}]

“ id”字符串中的每个字母与匹配索引处“ num”中的数字相对应。因此,对于值“ ABBA”,它将按以下顺序在每个位置匹配“ num”中的值:A = 10,B = 3,B = 5,A =1。我想返回ID为“ num”的列表每个词典中> 5,同时保持其当前顺序。

这是我的尝试:

bad_values = ['','0','1','2','3','4','5']
final_ids =[]
for i in list_of_dictionaries:
     list_of_high_num =[]
     for id,num in enumerate(i.items()):
          if i["num"] is not bad_values:
             list_of_high_num.append(i["id"])
        final_ids.append(list_of_high_num)

但是,我只是将我的原始ID字符串重新存储在列表中。我要去哪里错了?

所需的输出如下:

final_list = [['A'], ['A', 'C']]

1 个答案:

答案 0 :(得分:2)

考虑每个dictionary项目len(id) = len(num)的情况

list_of_dictionaries = [
    {'id': 'ABBA', 'num': ['10', '3', '5', '1']},
    {'id': 'ABAC', 'num': ['4', '5', '6', '20']}]

limit = 5

outerlist = []
for d in list_of_dictionaries:
    innerlist = []
    for x in range(len(d['num'])):
        if int(d['num'][x]) > limit:
            innerlist.append(d['id'][x])
    outerlist.append(innerlist)

print(outerlist) # [['A'], ['A', 'C']]