您如何修复 Python 中嵌套字典"TypeError: tuple indices must be integers or slices, not str"错误?



我有一个TypeError"出现异常:TypeError元组索引必须是整数或切片,而不是str"。我使用的是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库加载后的嵌套字典,skincollection中的每个单独字典,包含一个名为'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)"

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)

相关内容

最新更新