如何每行只打印python字典的一个键



所以有这个字典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' 

相关内容

最新更新