在输出中检索空列表而不是值

时间:2020-09-13 19:25:31

标签: python python-3.x list dictionary

我有以下代码,我想过滤掉小于阈值的那些值并将其存储在变量中。但是下面的代码在输出中给出了一个空列表。

current_memory_available=29.373699550744604
total_memory=614480960
lst= {0: 602112, 1: 12852224, 2: 12992768, 3: 3211264, 4: 6717952, 5: 7012864, 6: 1605632, 7: 4391936, 8: 5571584, 9: 5571584, 10: 802816, 11: 6326272, 12: 11044864, 13: 11044864, 14: 401408, 15: 9840640, 16: 9840640, 17: 9840640, 18: 100352, 19: 100352, 20: 411074560, 21: 67141632, 22: 16392000}


passed = {key: (value/total_memory) * 100 for key,value in lst.items() if value < 
current_memory_available}
print(passed)

谢谢,非常感谢帮助

3 个答案:

答案 0 :(得分:0)

dict理解中使用的

'if'语句永远不会为True,因为所有值都大于'current_memory_available'变量。因此,字典被打印为空。

答案 1 :(得分:0)

current_memory_available = 29.373699550744604
total_memory=614480960
dct = {0: 602112, 1: 12852224, 2: 12992768, 3: 3211264, 4: 6717952, 5: 7012864, 6: 1605632, 7: 4391936, 8: 5571584, 9: 5571584, 10: 802816, 11: 6326272, 12: 11044864, 13: 11044864, 14: 401408, 15: 9840640, 16: 9840640, 17: 9840640, 18: 100352, 19: 100352, 20: 411074560, 21: 67141632, 22: 16392000}
new_dct = {}
for key, value in dct.items():
    calc = (value / total_memory) *100
    if calc < current_memory_available:
        new_dct[key] = value
print(new_dct)

答案 2 :(得分:0)

以下逻辑不正确:

passed = {key: (value/total_memory) * 100 for key,value in lst.items() if value < 
current_memory_available}

尝试在下面使用:

passed = {key for key,value in lst.items() if (value/total_memory) * 100 < current_memory_available}

完整代码:

current_memory_available=29.373699550744604
total_memory=614480960
lst= {0: 602112, 1: 12852224, 2: 12992768, 3: 3211264, 4: 6717952, 5: 7012864, 6: 1605632, 7: 4391936, 8: 5571584, 9: 5571584, 10: 802816, 11: 6326272, 12: 11044864, 13: 11044864, 14: 401408, 15: 9840640, 16: 9840640, 17: 9840640, 18: 100352, 19: 100352, 20: 411074560, 21: 67141632, 22: 16392000}


passed = {key for key,value in lst.items() if (value/total_memory) * 100 < current_memory_available}
print(passed)
相关问题