【发布时间】:2016-05-19 17:26:57
【问题描述】:
我有一个包含 4 个字典的列表:
Epsom = [HorseA, HorseB, HorseC, HorseD]
每一个 dicts 的组成如下:
for x in Epsom:
print(x)
{'HorseA': {'jay': 0.8, 'john': 0.3, 'paul': 0.7, 'peter': 0.2}}
{'HorseB': {'jay': 0.4, 'john': 0.2, 'paul': 0.1, 'peter': 0.9}}
{'HorseC': {'jay': 0.8, 'john': 0.1, 'paul': 0.9, 'peter': 0.7}}
{'HorseD': {'jay': 0.6, 'john': 0.3, 'paul': 0.4, 'peter': 0.1}}
我想遍历Epsom 并返回每个马名和为其提供的最低值——包括为马提供相同最低编号的人。这是据我所知:
for x in Epsom:
horse_temp = x.keys()
temp_dict = x.values()
low_odds = min(temp_dict.values())
print('Horse: {} -- Lowest Odds: {}'.format(horse_temp, low_odds))
我得到的错误是:
Traceback (most recent call last):
File "<pyshell#144>", line 4, in <module>
low_odds = min(temp_dict.values())
AttributeError: 'dict_values' object has no attribute 'values'
我认为我错误地处理了temp_dict.values() 的结果(显然)。我以为通过使用.values(),我会返回一个字典。
最终,我希望返回一个干净的格式(我的一些打印包含诸如 Horse: [dict_keys(['HorseA'])] Lowest Odds: dict_values([{'jay': 0.8, 'john': 0.3, 'paul': 0.7, 'peter': 0.2}]) 之类的内容)
我希望它看起来像这样(例如):
Horse: HorseA -- Lowest Odds: John 0.3, Paul 0.3
Horse: HorseB -- Lowest Odds: Peter 0.2
Horse: HorseC -- Lowest Odds: Jay 0.8, Paul 0.8
Horse: HorseD -- Lowest Odds: John 0.3
任何帮助将不胜感激。从结构的角度来看,我是否使用嵌套在其中的 dict 列表以正确的方式执行此操作?有没有更有效的方法来做到这一点?谢谢。
【问题讨论】:
标签: python list python-3.x dictionary data-structures