0

我有很多关于太阳系行星的细节。我应该用它用Python制作一本字典。对于每个行星,我都有它的半径、与太阳的距离、卫星的数量、是否存在大气、卫星的名称、是否是气体行星等等。

例如,这里是 Mercury 的数据:

Mercury
    Radius - 2,439.7 km
    Distance from the sun - 58 million km
    Moons - none
    Atmosphere? True
    Gas planet? False

我将如何使用所有这些数据来创建字典?

到目前为止,我有:

radius = {} #radius of planets
radius['Mercury'] = 2439.7
radius['Venus'] = 6051.8
radius['Earth'] = 6371.0
radius['Mars'] = 3,396.2
radius['Jupiter'] = 69,911
radius['Saturn'] = 60,268
radius['Uranus'] = 25,559
radius['Neptune'] = 24,764

distance = {} # distance from sun
distance['Mercury'] = 58000000
distance['Venus'] = 108000000

我计划继续为我拥有的所有数据创建一个字典,以便为每种不同类型的数据提供不同的部分。

但是,如果这是正确的方法,我不知道。有人能告诉我我的方向是否正确吗?如果没有,我将如何解决它?

4

3 回答 3

5

制作行星字典可能要容易得多,其中每个成员都包含该行星属性的字典。您还可以通过使用字典文字语法来节省一些精力并避免重复。

按照上面的建议进行操作看起来像这样:

planets = {
  'Mercury': {
    'radius': 2439.7,
    'distance': 58000000
    'moons': []
    # etc...
  },
  'Venus': {
    'radius': 6051.8,
    'distance': 108000000,
    'moons': []
    # etc...
  },
  'Earth': {
    'radius': 6371.0,
    'distance': 150000000,
    'moons': ['Luna']
     # etc...
  }
  # etc...
}
于 2013-11-15T00:47:08.090 回答
2

结构化数据可能会更好,如下所示:

planets = {
    "mercury": {
        "radius": 2439.7,
        "distance": 58000000,
        # etc
    },
    "venus": {
        "radius": 6051.8,
        "distance": 108000000,
        # etc
    },
    #etc
}

这样,我们只需要一个变量,就可以自动将与单个行星相关的所有数据保存在一个地方。

然后,如果您想获得一个行星的所有距离(例如),您可以使用列表或字典推导来构造另一个临时字典:

distances = {planet: planets[planet]['distance'] for planet in planets}
于 2013-11-15T00:48:26.550 回答
0

我会设计字典,使键是行星名称,值是另一个字典,其键是属性。

您可以按如下方式访问它:

mercury_radius = planet["mercury"]["radius"]

并声明如下:

planets = {
    "mercury" : {
        "radius" : 2439.7,
        "distance_sun" : 58000000,
        "moons" : 0,
        "atmosphere" : True,
        "gas_planet" : False
        }
}
于 2013-11-15T00:52:37.627 回答