繁体   English   中英

是否可以遍历 Python 中的单个键值对以将值打印到列表中?

[英]Is it possible to iterate over single Key-Value Pair in Python to print a value to a list?

第一次在论坛上提问并且在寻找答案或线索时对我的特定问题没有运气。 我是 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 = ' , ')

output 变为:

Blaster Pistol, Blaster Pistol我只想让 output 读取Blaster Pistol

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

如果您的lootMechanism(ITEM) function 的ITEM参数是 dict 列表,则问题是您的 output 不是异常。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM