求看看,怎么解!,python问题

1.找出九大行星中直径最大和最小的,打印名字和对应直径

2.找出跟地球直径最接近的行星,打印名字。( abs(x) 可以求得x的绝对值 )

names = [“冥王星”, “火星", "水星", "金星", "地球", "海王星", "天王星", "土星", "木星"]

directs = [2370, 5000, 7000, 12500, 13000, 50000, 510000, 1230000, 1250000]

代码如下,有用的话请点击一下采纳谢谢

names = ["冥王星", "火星", "水星", "金星", "地球", "海王星", "天王星", "土星", "木星"]

directs = [2370, 5000, 7000, 12500, 13000, 50000, 510000, 1230000, 1250000]
ret = {}
for name, direct in zip(names, directs):
    if direct == min(directs):
        print('直径最小的是%s, %s' % (name, direct))
    if direct == max(directs):
        print('直径最大的是%s, %s' % (name, direct))
    ret[abs(direct-13000)] =  name
del ret[0]
print('跟地球直径最接近的行星为',ret[min(ret)])


names = ['冥王星', '火星', '水星', '金星', '地球', '海王星', '天王星', '土星', '木星']
directs = [2370, 5000, 7000, 12500, 13000, 50000, 510000, 1230000, 1250000]

dict_planets = {names[i]: directs[i] for i in range(len(names))}
print(dict_planets)
# 1.找出九大行星中直径最大和最小的,打印名字和对应直径
list1 = sorted(dict_planets.items(), key=lambda x: x[1])
print("直径最小:", list1[0][0], list1[0][1])
print("直径最大:", list1[len(names) - 1][0], list1[len(names) - 1][1])

# 2.找出跟地球直径最接近的行星,打印名字。( abs(x) 可以求得x的绝对值 )
min_gap = dict_planets['地球']
name_mark = '地球'
for name, direct in dict_planets.items():
    if name == '地球':
        continue
    gap = abs(dict_planets['地球'] - direct)
    if min_gap > gap:
        min_gap = gap
        name_mark = name
print("跟地球直径最接近的行星:", name_mark, dict_planets[name_mark])
# 直径最小: 冥王星 2370
# 直径最大: 木星 1250000
# 跟地球直径最接近的行星: 金星 12500

names = ["冥王星", "火星", "水星", "金星", "地球", "海王星", "天王星", "土星", "木星"]
directs = [2370, 5000, 7000, 12500, 13000, 50000, 510000, 1230000, 1250000]

print('直径最大:', max(names, key=lambda x: directs[names.index(x)]))
print('直径最小:', min(names, key=lambda x: directs[names.index(x)]))
print('最接近的行星:', min(names, key=lambda x: abs(directs[names.index(x)] - directs[4]) if x != '地球' else float('inf')))