<p>您可以将数据存储在列表中<a href="https://stackoverflow.com/a/47129807/5675325">This isn't something new</a>。那么,你会这样做吗</p>
<pre><code>class Pokemon:
# Read more about the adjustment made by removing the default value in Type2 - https://stackoverflow.com/a/48370634/5675325
def __init__(self, Number, Name, Type1, Type2, HP, Attack, Defense, SpecialAtk, SpecialDef, Speed, Generation, Legendary, Mega):
self.Number = Number
self.Name = Name
self.Type1 = Type1
self.Type2 = Type2
self.HP = HP
self.Attack = Attack
self.Defense = Defense
self.SpecialAtk = SpecialAtk
self.SpecialDef = SpecialDef
self.Speed = Speed
self.Generation = Generation
self.Legendary = Legendary
self.Mega = Mega
pokemon_list = []
with open('pokemon.csv', newline='') as csv_file:
#reader = csv.reader(csv_file)
#next(reader, None)
results = []
for line in csv_file:
words = line.split(',')
results.append((words[0:]))
print(results)
for Number, Name, Type1, Type2, HP, Attack, Defense, SpecialAtk, SpecialDef, Speed, Generation, Legendary, Mega in results:
pokemon_list.append(Pokemon(Number, Name, Type1, Type2, HP, Attack, Defense, SpecialAtk, SpecialDef, Speed, Generation, Legendary, Mega))
pokemon_list.pop(0) # To remove the object created using headers
print(pokemon_list)
# Then do something with the pokemon_list.
</code></pre>
<p>在控制台中,我们将看到如下内容</p>
<p><a href="https://i.stack.imgur.com/aQVub.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/aQVub.png" alt="Console after execution"/></a></p>
<p>如果我们想看看口袋妖怪列表变量是什么</p>
<p><a href="https://i.stack.imgur.com/yt8Ev.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/yt8Ev.png" alt="Pokemon list"/></a></p>
<p>单击以查找索引为3的列表项中的实例</p>
<p><a href="https://i.stack.imgur.com/4dVNO.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/4dVNO.png" alt="Pokemon"/></a></p>
<p>正如您所提到的,要想让口袋妖怪拥有最高的HP,您需要使用<code>operator.attrgetter()</code>来获得该值</p>
<pre><code>from operator import attrgetter
max_HP = max(pokemon_list, key=attrgetter('HP')).HP
max_ind = [obj for obj in pokemon_list if obj.HP == max_HP]
</code></pre>
<p>如果我们调整代码以包含此部分</p>
<pre><code>from operator import attrgetter
class Pokemon:
# Read more about the adjustment made by removing the default value in Type2 - https://stackoverflow.com/a/48370634/5675325
def __init__(self, Number, Name, Type1, Type2, HP, Attack, Defense, SpecialAtk, SpecialDef, Speed, Generation, Legendary, Mega):
self.Number = Number
self.Name = Name
self.Type1 = Type1
self.Type2 = Type2
self.HP = HP
self.Attack = Attack
self.Defense = Defense
self.SpecialAtk = SpecialAtk
self.SpecialDef = SpecialDef
self.Speed = Speed
self.Generation = Generation
self.Legendary = Legendary
self.Mega = Mega
pokemon_list = []
with open('pokemon.csv', newline='') as csv_file:
#reader = csv.reader(csv_file)
#next(reader, None)
results = []
for line in csv_file:
words = line.split(',')
results.append((words[0:]))
#print(results)
for Number, Name, Type1, Type2, HP, Attack, Defense, SpecialAtk, SpecialDef, Speed, Generation, Legendary, Mega in results:
pokemon_list.append(Pokemon(Number, Name, Type1, Type2, HP, Attack, Defense, SpecialAtk, SpecialDef, Speed, Generation, Legendary, Mega))
pokemon_list.pop(0)
#print(pokemon_list)
max_HP = max(pokemon_list, key=attrgetter('HP')).HP
max_ind = [obj for obj in pokemon_list if obj.HP == max_HP]
print(max_ind)
</code></pre>
<p>我们将在控制台中获得以下内容</p>
<p><a href="https://i.stack.imgur.com/pkMQT.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/pkMQT.png" alt="Console after code adjustment"/></a></p>
<p>所以我们可以看到列表max_ind只有一个值</p>
<p><a href="https://i.stack.imgur.com/ng2Qv.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ng2Qv.png" alt="Highest HP Pokemon"/></a></p>
<p>最大生命是80,拥有它的口袋妖怪是维努索</p>
<p>要排除超级或传奇的口袋妖怪,请从<a href="https://stackoverflow.com/a/7125547/5675325">here</a>获得灵感,并将其与前面提到的内容结合起来</p>