我遇到了一个TypeError“发生异常: TypeError元组索引必须是整数或切片,而不是字符串”。我使用的是python 3,下面是我的代码:
with open('item_info.json') as item_info:
item_data = json.load(item_info)
for collection in item_data:
print(f'\n {collection}')
for skin in item_data[collection].items():
if skin['rarity'] == 'Consumer Grade':
print(skin)我有一个使用JSON库在变量item_data中导入的大型JSON文件,collection是一个包含JSON库加载后嵌套字典的字典,skin是collection中的每个单独字典,其中包含一个名为'rarity'的键。我想打印每个值为'rarity'等于'Consumer Grade'的skin。我试图通过嵌套的for循环来做到这一点,因为有多个集合,我想循环遍历每个集合中的每个皮肤作为检查。
下面是保存在item_data中的导入JSON的示例
{
"2018_inferno": {
"MP5-SD | Dirt Drop (Factory New)": {
"rarity": "Consumer Grade"
},
"MAC-10 | Calf Skin (Factory New)": {
"rarity": "Industrial Grade"
}
},
"2018_nuke": {
"Five-SeveN | Coolant (Factory New)": {
"rarity": "Consumer Grade"
},
"Negev | Bulkhead (Factory New)": {
"rarity": "Industrial Grade"
}
},
"alpha": {
"Five-SeveN | Anodized Gunmetal (Factory New)": {
"rarity": "Consumer Grade"
},
"P250 | Facets (Field-Tested)": {
"rarity": "Industrial Grade"
}
}
}输出应如下所示:
2018_inferno
{"MP5-SD | Dirt Drop (Factory New)": {"rarity": "Consumer Grade"}}
2018_nuke
{"Five-SeveN | Coolant (Factory New)": {"rarity": "Consumer Grade"}}
alpha
{"Five-SeveN | Anodized Gunmetal (Factory New)": {"rarity": "Consumer Grade"}}或者(更理想)
2018_inferno
"MP5-SD | Dirt Drop (Factory New)"
2018_nuke
"Five-SeveN | Coolant (Factory New)"
alpha
"Five-SeveN | Anodized Gunmetal (Factory New)"发布于 2021-04-12 21:15:29
skin是来自item_data[collection].items()的键值对的元组。不能使用字符串索引(skin['rarity'])访问元组
您可以同时迭代键和值,以使其更易于迭代,例如
for collection, item in item_data.items():
print(f'\n{collection}')
for k, v in item.items():
if v.get('rarity') == 'Consumer Grade':
print(k)https://stackoverflow.com/questions/67058784
复制相似问题