如何在此字典中将字符串转换为整数,然后循环遍历它,而不会出现对于带有基数为10的int()的无效字面错误
:(mydict = {('6.0', '1.0'): '345.2', ('3.0', '9.0'): '632.7',
('2.0', '3.0'): '222.4', ('1.0', '4.0'): '672.1', ('8.0', '6.0'): '822.6',
('3.0', '8.0'): '225.5', ('7.0', '7.0'): '534.0', ('4.0', '7.0'): '599.3',
('8.0', '9.0'): '273.5', ('5.0', '3.0'): '822.5', ('4.0', '2.0'): '326.6'}
其中(key1, key2): value
我还想循环遍历这个词典,并使用这个公式计算......
((key1 * 360 / key2 * 180) + value)
每个密钥对。然后,我将打印出计算得出的3个最大值。这可能吗?
答案 0 :(得分:4)
转换两次。
>>> int('1.0')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '1.0'
>>> int(float('1.0'))
1
答案 1 :(得分:2)
尝试以下实施
>>> calc_list=(int(float(a))*360/int(float(b))*180+int(float(v))
for (a,b),v in mydict.iteritems())
>>> print '\n'.join(map(str,heapq.nlargest(3,calc_list)))
389145
129926
108822
>>>
答案 2 :(得分:1)
您可以执行以下操作:
res = map(lambda x: (float(x[0][0]) * 360.) / (float(x[0][1]) * 180.) + float(x[1]), mydict.items())
这会产生类似的东西:
[357.2, 633.37]
获得最大的3个:
sorted(res, reverse=True)[0:3]
希望有所帮助。