2013-12-19 116 views
1

目前我只是在Python中創建一個賭場。只是爲了欺騙,而我不是一個問題。但混亂。我一直試圖弄清楚這一點。我的輸出不遵循任何明顯的模式,但每次都是一樣的。我的輸出感到困惑

import random 
import time 
import string 
import os 
import platform 

def clear(): 
    operSys = platform.system() 
    if operSys.lower() == "Windows": 
     os.system('cls') 
    else: 
     os.system('clear') 

cards = {"Ace of Spades":'1', 
     "Ace of Clubs":'1', 
     "Ace of Diamonds":'1', 
     "Ace of Hearts":'1', 

     "Two of Spades":'2', 
     "Two of Clubs":'2', 
     "Two of Diamonds":'2', 
     "Two of Hearts":'2', 

     "Three of Spades":'3', 
     "Three of Clubs":'3', 
     "Three of Diamonds":'3', 
     "Three of Hearts":'3', 

     "Four of Spades":'4', 
     "Four of Clubs":'4', 
     "Four of Diamonds":'4', 
     "Four of Hearts":'4', 

     "Five of Spades":'5', 
     "Five of Clubs":'5', 
     "Five of Diamonds":'5', 
     "Five of Hearts":'5', 

     "Six of Spades":'6', 
     "Six of Clubs":'6', 
     "Six of Diamonds":'6', 
     "Six of Hearts":'6', 

     "Seven of Spades":'7', 
     "Seven of Clubs":'7', 
     "Seven of Diamonds":'7', 
     "Seven of Hearts":'7', 

     "Eight of Spades":'8', 
     "Eight of Clubs":'8', 
     "Eight of Diamonds":'8', 
     "Eight of Hearts":'8', 

     "Nine of Spades":'9', 
     "Nine of Clubs":'9', 
     "Nine of Diamonds":'9', 
     "Nine of Hearts":'9', 

     "Ten of Spades":'10', 
     "Ten of Clubs":'10', 
     "Ten of Diamonds":'10', 
     "Ten of Hearts":'10', 

     "Jack of Spades":'11', 
     "Jack of Clubs":'11', 
     "Jack of Diamonds":'11', 
     "Jack of Hearts":'11', 

     "Queen of Spades":'12', 
     "Queen of Clubs":'12', 
     "Queen of Diamonds":'12', 
     "Queen of Diamonds":'12', 

     "King of Spades":'13', 
     "King of Clubs":'13', 
     "King of Diamonds":'13', 
     "King of Hearts":'13'} 

for x in cards: 
    print x + ' : ' + cards[x] 

輸出:在Python(與大多數其它語言)

Queen of Clubs : 12 
Ten of Hearts : 10 
Three of Spades : 3 
Nine of Spades : 9 
Ace of Clubs : 1 
King of Spades : 13 
Ace of Spades : 1 
Queen of Diamonds : 12 
Three of Hearts : 3 
Seven of Hearts : 7 
Two of Spades : 2 
Two of Hearts : 2 
Five of Hearts : 5 
Three of Clubs : 3 
Queen of Spades : 12 
Two of Clubs : 2 
Four of Diamonds : 4 
King of Diamonds : 13 
Ace of Diamonds : 1 
Five of Diamonds : 5 
Four of Spades : 4 
Six of Spades : 6 
Ten of Spades : 10 
Eight of Clubs : 8 
Jack of Clubs : 11 
Six of Diamonds : 6 
Two of Diamonds : 2 
Eight of Hearts : 8 
Jack of Hearts : 11 
Nine of Hearts : 9 
King of Hearts : 13 
Ace of Hearts : 1 
Seven of Spades : 7 
Six of Hearts : 6 
Ten of Clubs : 10 
Five of Spades : 5 
Jack of Spades : 11 
Eight of Spades : 8 
Ten of Diamonds : 10 
Four of Clubs : 4 
Eight of Diamonds : 8 
Jack of Diamonds : 11 
Six of Clubs : 6 
King of Clubs : 13 
Three of Diamonds : 3 
Nine of Clubs : 9 
Nine of Diamonds : 9 
Seven of Diamonds : 7 
Four of Hearts : 4 
Five of Clubs : 5 
Seven of Clubs : 7 
+2

這個答案解釋它,我認爲http://stackoverflow.com/a/526131/770019 – bnjmn

回答

4

字典沒有一個隱含的順序。它們實際上是用於無序的鍵值對,甚至不嘗試保留鍵值對的順序。作爲一種數據結構,其目標是儘可能便宜地查找其他特徵(如訂單)被犧牲的價值。因此,如果您確實需要訂單,則可以將鍵放入有序數組中,並從字典中查看數值,甚至可以使用數組將數據存儲在首位。

0

您的意思是字典是你的模式?如果是這樣,這是錯誤的,因爲Python中的字典是無序結構(輸出可能與您的「模式」不同)。

2

dict順序是任意的。試試這個:

for k, v in sorted(cards.items()): 
    print(k+':'+v) 

按鍵排序。通過項目值排序走了一步或兩個以上:

reversed = [(v,k) for k, v in cards.items()] 
for v,k in sorted(reversed): 
     print(k+':'+v) 

而且BTW:任何字符串的.lower()輸出將不會匹配混合大小寫字符串如「窗口」。

+0

哎呀,只是注意到這個錯字!感謝這和代碼。 –