在Python中,是否可以迭代单个键值对以将值打印到列表中?

2024-06-08 01:30:42 发布

您现在位置:Python中文网/ 问答频道 /正文

第一次在论坛上问问题,在寻找答案或线索时,我对我的特定问题没有运气。我是python的初学者,如果这意味着什么的话,那么任何帮助都是非常感谢的! 我只是想为我的TRPG写一个“战利品生成器”程序。 我已经弄清楚了我希望程序如何编译列表。 ...

#LISTS for storing loot based on rarity : YELLOW (COMMON) , GREEN (UNCOMMON) , RED (RARE)
# BLUE (ULTRA) , PURPLE (MYTHIC)
YELLOW = []
GREEN  = []BlasterRifle =  { 'name' : 'Blaster Rifle'  , 'cost' : 350} 
RED    = []
BLUE   = []
PURPLE = []

# test Dictionary to represent an ITEM
BlasterPistol = { 'name' : 'Blaster Pistol' , 'cost' : 250}
BlasterRifle =  { 'name' : 'Blaster Rifle'  , 'cost' : 350}

这个问题。。。每次它迭代项{}中的所有“数据”点时,它会打印两次项的“名称”

def lootMechanics(ITEM):
    for data in ITEM:
        if ITEM['cost'] == 250:
            YELLOW.append(ITEM['name'])
            

#prints out to a list in a certain format with no brackets.
print(*YELLOW , sep = ' , ')

输出变为:

爆能枪,爆能枪 我只想让输出读取 爆能手枪


Tags: tonamein程序forgreenbluered
1条回答
网友
1楼 · 发布于 2024-06-08 01:30:42

对不起,我不能评论,因为没有足够的声誉

问题是,如果lootMechanism(ITEM)函数的ITEM参数是dict的列表,则输出不是异常

使用lootMechanism(ITEM)函数的for循环有点问题。我认为应该是:

def lootMechanics(ITEM):
    for data in ITEM:
        if data['cost'] == 250:
            YELLOW.append(data['name'])

如果您的ITEM列表在lootMechanism(ITEM)函数中确实包含多个满足if条件的dict,那么您将得到多个相同的名称

如果您不希望这样的行为,那么我建议您使用set()对象来存储项的'name'属性

相关问题 更多 >

    热门问题