首页 > 解决方案 > 从字典列表中创建具有特定值的列表(作为字符串的键和值是整数列表)

问题描述

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

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。我想返回一个带有“num”的 id 列表> 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']]

标签: pythonstringlistdictionary

解决方案


考虑每个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']]

推荐阅读