我有一个嵌套列表(字典列表列表),其中第二个列表是不规则的。我想获取数组中某个键的所有值。
每行的列表:
[{'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]