不能让三元运算符工作

时间:2014-07-26 10:59:55

标签: python

所以我有一个双重问题。我有selectedCards列表,其中包含2个元素 - 卡片等级和套装,格式为:['6', 'c']

club = u"\u2663" # Unicode codepoint for club

newList = [club for i in selectedCards if i == 'c' else i]

我想将'c'更改为俱乐部的图形表示,但这个表达不起作用。我尝试了很多,但找不到什么是错的。它说:SyntaxError: invalid syntax

第二个问题,如果我删除else语句,那么它可以工作,但它不会输出我想要的内容,它看起来像这样:[u'\u2663'],甚至认为打印(俱乐部)输出♣。

编辑:newList = [club if i == 'c' else i for i in selectedCards]是正确的语法,感谢xtofl。

1 个答案:

答案 0 :(得分:0)

或许你最好用dict:

symbols = {
  'c': u"\u2663",
  'h': u"....hearts",
  ...
}

newList = [symbols[card] for card in selectedCards]

(或者如果你想要发挥作用:

map( symbols.get, selectedCards )

至于第一个问题:cfr https://stackoverflow.com/a/4260304/6610

对于第二个,打印,问题:python只是给你一个'清单代表;如果你想要它的字符串形式,这对我来说就是这个诀窍:

print("".join(newList))

(提示:在包含所有这些逻辑的Card类中代表你卡是明智的,有点像

class Card:
   def __init__(self, rank, suit):
      self.rank = rank
      self.suit = suit

   symbols = {'c': u"\u2663", ...}

   def __str__(self):
      return "".join([self.rank, Card.symbols[self.suit]])