2013-12-19 67 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

哎呀,只是注意到这个错字!感谢这和代码。 –