我有一本类似的字典:
table_wood = {'Red': {'Abbreviation': 'R',
'Instances': 269601,
'Code': '8924',
'Discovered': '1876-08-01',
'Largest usage': 'Douglas',
'Indigo': {'Abbreviation': 'IN',
'Instances': 216443,
'Code': '2343',
'Discovered': '1890-07-03',
'Largest usage': 'Freida'}}
我需要遍历table_wood字典并计算 table_wood 中每个字典的实例/代码。完成此操作后,我需要报告哪个实例数最多,哪个实例数最少。
我尝试使用 for 循环将相关值附加到空列表中,然后使用嵌套的 for 循环来比较这些列表值,以查看哪个原始实例最大和最低。 它涉及大量的空列表,我知道如果我能将它们作为新的键/值对存储在空字典中,有更好的方法。
instanceCodeRate = []
colorInstances = []
highestInstance = []
lowestInstance = []
for color in table_wood:
colorRate.append(color+ ": " +str(round((table_wood[color]["Instances"])/(table_wood[color]["Code"]),2))+ " instances per code.n")
#print(instanceCodeRate)
colorInstances.append(table_wood[color]["Instances"])
#print(colorInstances)
for instance in colorInstances:
if ((table_wood[color]["Instances"]) == min(colorInstances)):
lowestInstance.append(color)
elif ((table_wood[color]["Instances"]) == max(colorInstances)):
highestInstance.append(color)
#print(instanceCodeRate)
#print(highestInstance)
#print(lowestInstance)
当我打印(实例CodeRate(时,它将其作为列表元素执行,这使我尝试打印的""空格字符无效,以便每个条目都有自己的行。 我的 elif 通过只存储最大的元素来工作,但由于某种原因,存储最小值的 if 语句存储多个列表元素,其中应该只有一个。
Python的max
函数接受可选的key
参数
colors = list(table_wood.keys())
attrs = list(table_wood.values())
max_value = max(attrs, key=lambda: x: x['Instances']/int(x['Code']))
这将打印出来:
{'Abbreviation': 'IN',
'Instances': 216443,
'Code': '2343',
'Discovered': '1890-07-03',
'Largest usage': 'Freida'}
这同样可以用min