gpt4 book ai didi

python - 错误列表索引必须是整数或切片,而不是 str

转载 作者:太空狗 更新时间:2023-10-30 02:53:50 25 4
gpt4 key购买 nike

根据题目,帮我解决错误。我尝试根据“rv”变量中的 country_name 打印国家代码。country_found 是国家列表中具有相同值的数据列表,然后我尝试检索 countryCode,但出现错误

rv = "Indonesia"
country_lower = rv.lower()
countries = {
"DATA": {
"data": [{
"countryId": "26",
"countryCode": "AU",
"name": "Australia"
}, {
"countryId": "17",
"countryCode": "ID",
"name": "Indonesia"
}]
}
}
def take_first(predicate, iterable):
for element in iterable:
if predicate(element):
yield element
break

country_found = list(
take_first(
lambda e: e['name'].lower() == country_lower,
countries['DATA']['data']
)
)

default_country_code = 'US'
country_code = (
country_found['countryCode']
if country_found
else default_country_code
)
print (country_code)

最佳答案

country_found 是一个列表,但您试图通过字符串索引获取项目:

country_found['countryCode']

您可能想获得比赛的第一个结果:

country_code = country_found[0]['countryCode'] if country_found else default_country_code

但是,您真的需要将结果作为列表吗,如果您只使用 next() 会怎么样? :

result = take_first(lambda e: e['name'].lower() == country_lower, 
countries['DATA']['data'])
try:
country_code = next(result)['countryCode']
except StopIteration:
country_code = default_country_code

关于python - 错误列表索引必须是整数或切片,而不是 str,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48088460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com