2017-11-23 3 views
-1

나는 최소 발생 횟수를 찾아서 희귀 한 카드를 찾는 파이썬에서 메소드를 작성하려고합니다. 나 또한 이들과 관련된 이름과 색을 반환하려고합니다. 누군가가 나를 더 효과적인 방식으로 쓰도록 도울 수 있습니까? 나는 그 사건을 세어보고, 색을 입수하여 목록에 넣고, 이름을 목록에 넣을 수있다. 그러나 이것을 어떻게 별개의 목록에 담는 것 이외에 할 수 있습니까? 더 많은 코드를 게시 할 수 있지만 드문 드문 유형은 일반, 희귀 및 신화 희귀입니다.최소 발생 횟수를 찾는 파이썬 메서드

코드 :

def get_rarest_card(self): 
    uncommon_counter = 0 
    common_counter = 0 
    rare_counter = 0 
    mythic_rare_counter =0 
    mythic_rare_cards=[] 
    uncommon_color_list=[] 
    common_color_list=[] 
    rare_color_list=[] 
    mythicrare_color_list=[] 

for eachCard in self.cardlist: 
    if eachCard.rarity=="Uncommon": 
     uncommon_counter = uncommon_counter + 1 
     uncommon_color_list.append(eachCard.get_colors()) 
    elif eachCard.rarity=="Common": 
     common_counter=common_counter + 1 
     common_color_list.append(eachCard.get_colors()) 
    elif eachCard.rarity=="Rare": 
     rare_counter = rare_counter + 1 
     rare_color_list.append(eachCard.get_colors()) 
    elif eachCard.rarity=="Mythic Rare": 
     mythic_rare_cards.append(eachCard.get_name()) 
     mythic_rare_counter = mythic_rare_counter + 1 
     mythicrare_color_list.append(eachCard.get_colors()) 
return(mythic_rare_cards) 
+0

왜 희귀 한 목록이 다른가? 각 클래스별로 드문 카드를 원하십니까? – tzaman

+0

우리는 최소한의 카드 (희귀 한 카드)를 찾고 있습니다. 그런 다음 해당 카드와 관련된 색상을 파악하십시오. –

+0

이 질문은 https://codereview.stackexchange.com/에 속합니다. – Xaerxess

답변

0

collections.Counter 여기에 당신을 도울 수 있습니다 :이 과정을 통해 넣어 수 있습니다 해쉬

from collections import Counter 
card_rarities = Counter(card.rarity for card in self.cardlist) 
rarity = min(card_rarities, key=lambda card: card_rarities[card]) # Effectively an argmin 
return [card for card in self.cardlist if card.rarity == rarity] 

무엇이든, 당신이 따라 최소 공통 희귀, 색상, 또는 특정 카드를 얻을 수 있도록 너는 Counter에 무슨 피드에.

+0

무엇이 r일까요? 내가 그것을 실행했을 때, 그것은 r이 정의되어 있지 않다라고 말했다. "희소성"에 JSON 객체에서 호출 된 것이 무엇인지 넣었다. –

+0

? 그게 그게 무엇을 찾고 있니? –

+0

정말 고맙습니다. 필자는 그 일을 마치고 이제 그것을 인쇄하려고 노력 중입니다. 임씨는 이걸 <__ main __. MagicCard at 0x10b506b00> –

0
def get_rarest_cards(): 
    return [card for card in self.cardlist if card.rarity.lower() == 'mythic rare'] 

인쇄 방법은 사용자가 결정합니다. 어쩌면 이름으로?

mythics = my_cards.get_rarest_cards() 
for card in mythics: 
    print(card.get_name()) 
+0

이것은 작동하지만, 가장 적게 가지고있는 것을 알기로되어 있지 않습니다. 나는 cux 내가 확인한 것을 압니다. 그래서 다른 유형의 개수를 확인하고 무엇이 최소인지 알아 내야합니다. –

+0

업데이트 된 첫 번째 답변보기 – scnerd

관련 문제