python - 如何修复此错误:AttributeError:'list' object has no attribute 'items'?
问题描述
我正在尝试添加从牌组中拉出的牌的值。我不知道如何打印卡片的附加值。
我试图更改我的模块并以不同的方式导入模块。
使用hand.py
def main():
suits = ['Spades', 'Diamonds', 'Hearts', 'Clubs']
ranks = ['Ace', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King']
score = ScoredHand()
thedeck = frenchdeck(ranks, suits)
createdeck.py
def frenchdeck(ranks, suits):
decklist = []
for rank in ranks:
for suit in suits:
decklist.append(ScoredCard(rank, suit, ranks, suits))
return Deck(decklist)
记分卡.py
class ScoredCard(Card):
def __init__(self, rank, suit, rank_encoding = None, suit_encoding = None, score_encoding = None):
super().__init__(rank, suit, rank_encoding, suit_encoding)
self._score_encoding = score_encoding
卡片.py
def reversedict(dictionary):
return {v:k for k, v in dictionary.items()}
class Card:
def __init__(self, rank, suit, rank_encoding, suit_encoding):
self.setrank(rank)
self.setsuit(suit)
self._rank_decoding = reversedict(rank_encoding)
self._rank_encoding = rank_encoding
self._suit_decoding = reversedict(suit_encoding)
self._suit_encoding = suit_encoding
输出
Traceback (most recent call last):
File ".\useofhand.py", line 30, in <module>
main()
File ".\useofhand.py", line 11, in main
thedeck = frenchdeck(ranks, suits)
File "C:\Users\MINE\Documents\cisc_120_files\lab4\createdeck.py", line 10, in frenchdeck
decklist.append(ScoredCard(rank, suit, ranks, suits))
File "C:\Users\MINE\Documents\cisc_120_files\lab4\scoredcard.py", line 7, in __init__
super().__init__(rank, suit, rank_encoding, suit_encoding)
File "C:\Users\MINE\Documents\cisc_120_files\lab4\card.py", line 9, in __init__
self._rank_decoding = reversedict(rank_encoding)
File "C:\Users\MINE\Documents\cisc_120_files\lab4\card.py", line 2, in reversedict
return {v:k for k, v in dictionary.items()}
AttributeError: 'list' object has no attribute 'items'
解决方案
您的ranks
which 是一个列表,而 which 成为rank_encoding
您的代码错误的地方。你在跑步 :
self._rank_decoding = reversedict(rank_encoding)
这是在做什么:
return {v:k for k, v in rank_encoding.items()}
尽管 :
rank_encoding = ranks = ['Ace', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King']
我认为你想要做的是:
return rank_encoding.reverse()
推荐阅读
- debugging - 调查大型日志文件中的错误的好方法/技术是什么?
- heroku - 运行时如何解决 SHA 不匹配问题:heroku update?
- html - 右侧边距未知
- solidity - 智能合约不能在合约内部添加转账功能
- flutter - 是否有可能知道我何时在 for 循环中的最后一个元素上?
- android - firebase 查询 orderByChild().equalTo() android kotlin 的问题
- java - JavaFX css菜单边框颜色错误
- c - rand() 与 fork() 一起使用时生成相同的数字
- r - 将 ggplot2 与 ks 包的 kde 图一起使用
- aspnetboilerplate - ASP.NET 零(ABP)调用控制器中的简单操作