2013-11-15 32 views
0

我有一堆關於太陽系行星的細節。我應該用Python製作一本字典。對於每個行星,我都有它的半徑,與太陽的距離,衛星的數量,如果存在大氣層,衛星的名稱,如果它是氣體行星等等。使用行星數據創建字典

例如,這裏是水星的數據:

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 

我是繼續此創建一個字典的一切,我有這樣我會爲每個不同類型的數據的不同部分的數據的規劃。

但是,如果這是正確的做法,我不這樣做。有人可以告訴我,如果我走向正確的方向嗎?如果沒有,我將如何解決它?

+0

(a)你不能在數字中使用逗號Python編寫的。 (b)你知道你可以用一個單一的表達式來描述字典,比如'{「Mercury」:2439.7,「Venus」:6051.8,...}',而不用單獨設置每個值,對不對? – jwodder

回答

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... 
} 
+0

如果一個星球有衛星,你會如何將它的名字放在字典 – rggod

+0

@ user2994135:我已經更新了我的答案來演示。有月亮的行星可以將月球名稱列爲'衛星'成員,沒有衛星的行星(即水星和金星)有一個空列表(或者在這些情況下可以選擇忽略該成員)。 – Mac

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} 
+2

最後的代碼片段不起作用。它需要是'{行星:行星[行星] ['距離'] ......}。 – jwodder

+0

@jwodder - 謝謝;固定! – Michael0x2a

0

我會設計的字典,使得關鍵是行星名稱,而這些值是另一個字典,其中的關鍵是屬性。

如下你會訪問:

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

並聲明如下:

planets = { 
    "mercury" : { 
     "radius" : 2439.7, 
     "distance_sun" : 58000000, 
     "moons" : 0, 
     "atmosphere" : True, 
     "gas_planet" : False 
     } 
}