python - 是否可以在 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
解决方案
抱歉,由于声誉不足,我无法发表评论。
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'
项目的属性。
推荐阅读
- python - 如何从txt文件中提取不同行的两个单词之间的单词?
- ios - swift中的didBegin方法不会被所有碰撞调用
- language-lawyer - 是否允许符合 C11 的实现将每个函数编译成无限循环?
- jquery - jQuery .css 中的多个字体变化设置
- java - 如何在Java中将两个文本文件数据逐行写入第三个文件?
- excel - PowerQuery 中的随机样本
- python - 当 WHERE 子句具有功能时,如何编写 Django 查询?
- javascript - 确定谁点击了电子邮件中的链接
- mysql - 用于选择最后几行的mysql查询
- java - 使用后台方法从我的片段中读取 json 后,我的 android studio 应用程序不断崩溃