从不规则嵌套列表中获取值



我有一个嵌套列表(字典列表列表),其中第二个列表是不规则的。我想获取数组中某个键的所有值。

每行的列表:

[{'0.1':1},{'0.2':2},{'0.3':3}]
[{'0.2':2},{'0.3':3},{'0.4':4},{'0.5':5}]
[{'0.1':1},{'0.2':2}]
[{'0.5':5}]

我希望将"0.5"键的所有值存储到数组中。我尝试了多个版本:

[record[i]['0.5'] for i in record]
-->TypeError: list indices must be integers, not list
    for d in record.values():
        print(d['0.5'])
-->AttributeError: 'list' object has no attribute 'values'

你可以试试这个:

s = [[{'0.1':1},{'0.2':2},{'0.3':3}], [{'0.2':2},{'0.3':3},{'0.4':4},{'0.5':5}], [{'0.1':1},{'0.2':2}], [{'0.5':5}]]
new_vals = [c[0] for c in [[b["0.5"] for b in i if "0.5" in b] for i in s] if c]

输出:

[5, 5]

执行此操作的简单方法是在列表推导中使用双循环:

record = [
    [{'0.1': 1}, {'0.2': 2}, {'0.3': 3}],
    [{'0.2': 2}, {'0.3': 3}, {'0.4': 4}, {'0.5': 5}],
    [{'0.1': 1}, {'0.2': 2}],
    [{'0.5': 5}],
]
output = [d['0.5'] for row in record for d in row if '0.5' in d]
print(output)

输出

[5, 5]

最新更新