我有以下代码段:
list = [{"num":1,"test":"A"},{"num":6,"test":"B"},{"num":5,"test":"c"},{"num":1,"test":"D"}]
min = None
for x in list:
if x["num"]<min or min==None:
min=x["num"]
print(min)
print([index for index, element in enumerate(list)
if min == element["num"]])
实际上并没有输出任何有用的东西,我的目标是输出如标题中所述的num
中带有“ 1”的字典。
我知道一个菜鸟问题,但这是我第一次接触该语言。
谢谢!
答案 0 :(得分:1)
min()
带有一个key
参数,可让您指定如何计算最小值。这将使您找到具有最小num
值的对象。然后,您可以使用该列表查找功能(或类似方法)来找到所有这些功能。
l = [{"num":1,"test":"A"},{"num":6,"test":"B"},{"num":5,"test":"c"},{"num":1,"test":"D"}]
m = min(l, key=lambda d: d['num'])
# {'num': 1, 'test': 'A'}
[item for item in l if item['num'] == m['num']]
# [{'num': 1, 'test': 'A'}, {'num': 1, 'test': 'D'}]
答案 1 :(得分:0)
您可以尝试以下操作:
list_=[{"num":1,"test":"A"},{"num":6,"test":"B"},{"num":5,"test":"c"},{"num":1,"test":"D"}]
min_=min(list_,key=lambda x: x["num"])
min_ = min_["num"]
l=list(filter(lambda x: x["num"]==min_,list_))
print(l)
答案 2 :(得分:0)
您需要在程序开始时将min设置为任意大的数字。我将其设置为500。然后,您必须检查“ num”值是否小于或等于min,否则它将无法同时捕获两个 1 值。
list = [{"num":1,"test":"A"},{"num":6,"test":"B"},{"num":5,"test":"c"},{"num":1,"test":"D"}]
min = 500
for x in list:
if x["num"]<=min or min==None:
min=x["num"]
print(x)
print(min)