【问题标题】:Creating a list with specific values from a list of dictionaries (keys as strings and values are list of integers)从字典列表中创建具有特定值的列表(作为字符串的键和值是整数列表)
【发布时间】:2025-12-30 17:05:11
【问题描述】:

我有一个字典列表,其中包含一个字符串和一个字符串列表作为它们各自键的值:

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']]

【问题讨论】:

  • 您的预期输出是什么?您需要提供minimal reproducible example。顺便说一句,欢迎来到 SO!如果您需要更多建议,请查看tourHow to Ask
  • 您能否为您的程序提供一个示例输出并更清楚地解释该算法?对我来说没有意义......
  • 你认为if i["num"] is not bad_values: 在做什么?这将始终返回 False
  • 用我想要的输出编辑。感谢您提供这些介绍性资源,显然我是 Python 新手。
  • With if i["num"] is not bad_values: 我说我想要所有高于 5 的值。我尝试使用 i["num"] > 5: 但这会导致问题,因为我收到 TypeError。根据我的搜索,我认为 i.items() 正在返回一个导致此问题的元组?

标签: python string list dictionary


【解决方案1】:

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

【讨论】:

  • 请使用您的所有输入进行测试,如果有任何错误,请分享。
  • 它适用于较小的示例!但是,我收到 ValueError: invalid literal for int() with base 10: ''. 'num': [''] 有几个地方,因为缺少数据,我认为这是问题所在。
  • invalid literal for int() with base 10: 当你有一个空字符串时你会得到这个。例如int('') 再次检查您的输入。如果所有的长度相等。
  • invalid literal for int() with base 10: *.com/questions/1841565/…
  • 是的,事实证明我在数据集中有一些奇怪的额外空格,这在我解析数据集的方式中创建了空字符串。代码现在可以完美运行,因为它已经修复了。非常感谢!
最近更新 更多