首页 > 解决方案 > 是否可以在 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}

问题...每次它遍历ITEMS{}中的所有“数据”点时,它都会打印两次ITEM的“名称”...

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 = ' , ')

输出变为:

Blaster Pistol , Blaster Pistol 我只希望输出读取 Blaster Pistol

标签: pythonlistdictionaryfor-loopkey-value

解决方案


抱歉,由于声誉不足,我无法发表评论。

ITEM问题是如果你的函数的参数lootMechanism(ITEM)是一个字典列表,你的输出不是异常。

您的 for 循环与您的lootMechanism(ITEM)函数存在一些问题。我相信它应该是:

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

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

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


推荐阅读