所以有这个字典avgTemp = {1945: 51.75, 1946: 52.95, 1947: 51.92, 1948: 51.61,....}
其中键对应年份,值为平均温度。我使用map映射出字典的值:
FahrtoCelc = list(map(lambda x:((x - 32) * 5 / 9), avgTemp.values()))
那么我想打印出这个值对应于字典中的年份,使用:
for i in range(len(avgTemp )):
print(avgTemp.keys(), " : ", FahrtoCelc[i])
但最终得到的答案不是我想要的,我如何打印'year: convert temp'
试试这个:
avgTemp = {1945: 51.75, 1946: 52.95, 1947: 51.92, 1948: 51.61}
for year, temperature in avgTemp.items():
print(f"{year} - {round((temperature - 32) * 5 / 9, 2)}C")
输出:
1945 - 10.97C
1946 - 11.64C
1947 - 11.07C
1948 - 10.89C
你应该使用字典的items()方法:
avgTemp = {1945: 51.75, 1946: 52.95, 1947: 51.92, 1948: 51.61}
print(*(f"{y} : {(t-32)*5/9:02.2f}°C" for y,t in avgTemp.items()),sep="n")
1945 : 10.97°C
1946 : 11.64°C
1947 : 11.07°C
1948 : 10.89°C
如果你想使用map(),你可以用它来代替推导式:
FtoC = lambda yt: f"{yt[0]} : {(yt[1]-32)*5/9:02.2f}°C"
print(*map(FtoC,avgTemp.items()),sep="n")
不带格式字符串:
FtoC = lambda yt: str(yt[0]) + " : " + str(round((yt[1]-32)*5/9,2)) + "°C"
使用字典推导将键保存在FahrtoCelc
变量中:
FahrtoCelc = {year: ((x - 32) * 5 / 9) for year, x in avgTemp.items()}
for year, temperature in FahrtoCelc:
print(year, ":", temperature)
另一种方法是使用连接语句,它提供了这样一行代码:
print('n'.join('{} - {}'.format(*item) for item in avgTemp.items()))
既然你想使用map
,你必须在创建新字典时应用它。
avgTemp = {1945: 51.75, 1946: 52.95, 1947: 51.92, 1948: 51.61,}
celsius = dict(map(lambda x: (x[0], (x[1] - 32) * 5 / 9), avgTemp.items()))
现在可以遍历摄氏温度字典了。
for key, value in celsius.items():
print(f'{key}: {value}°C'