循环中的奇怪错误

2024-06-01 20:21:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有口述

{
    "count_casinos": 4,
    "casinos": {
        "16": {
            "fields": [
                {"casino_logo": "assets/images/crown.png"},
                {"raiting_casino": "9"},
                {"bonus_code": "AX7772"},
                {"bonus_summa": "200"},
                {"bonus_min_depozit": "1000000"},
                {"bonus_veizdjer": "4"}],
            "title": "Royal casino casino1"},
        "17": {
            "fields": [
                {"casino_logo": "assets/images/crown.png"},
                {"raiting_casino": "8.2"},
                {"bonus_code": "AX777"},
                {"bonus_summa": "200"},
                {"bonus_min_depozit": "1000000"},
                {"bonus_veizdjer": "4"}],
            "title": "Royal casino casino3"},
        "18": {
            "fields": [
                {"casino_logo": "assets/images/crown.png"},
                {"raiting_casino": "9.3"},
                {"bonus_code": "AX7772"},
                {"bonus_summa": "200"},
                {"bonus_min_depozit": "1000000"},
                {"bonus_veizdjer": "4"}],
            "title": "Royal casino casino2"},
        "15": {
            "fields": [
                {"casino_logo": "assets/images/crown.png"},
                {"raiting_casino": "9.9"},
                {"bonus_code": "AX777"},
                {"bonus_summa": "200"},
                {"bonus_min_depozit": "1000000"},
                {"bonus_veizdjer": "4"}],
            "title": "Royal casino casino4"}}}

当我尝试循环时

     for k,v in casino.iteritems():
         for iterm in v['fields']:
             print iterm['bonus_code']

key:error

怎么了?你知道吗


Tags: fieldspngtitlecodeminlogoimagesassets
2条回答

你没有深入研究嵌套字典。如果您只对数据的casinos部分感兴趣,那么这样的方法对您很有用。你知道吗

for k,v in casino['casinos'].iteritems():
    data_list = v.get('fields')

    # If you know the list index is consistent
    print data_list[2].get('bonus_code')

    #otherwise
    for item in data_list:
        if 'bonus_code' in item.keys():
            print item['bonus_code']

如果遍历v['fields'],则每个项都将是dict对象,只有一个项具有'bonus_code'键。你知道吗

微小的改变不会让你犯错

 for k,v in casino.iteritems():
     for iterm in v['fields']:
         if 'bonus_code' in iterm: print iterm['bonus_code']

注:如果casino是初始数据dict .get('casinos')

更新

我猜OP的casino变量是

data = {"count_casinos": 4, "casinos": {"16": {"fields": [{"casino_logo": "assets/images/crown.png"}, {"raiting_casino": "9"}, {"bonus_code": "AX7772"}, {"bonus_summa": "200"}, {"bonus_min_depozit": "1000000"}, {"bonus_veizdjer": "4"}], "title": "Royal casino casino1"}, "17": {"fields": [{"casino_logo": "assets/images/crown.png"}, {"raiting_casino": "8.2"}, {"bonus_code": "AX777"}, {"bonus_summa": "200"}, {"bonus_min_depozit": "1000000"}, {"bonus_veizdjer": "4"}], "title": "Royal casino casino3"}, "18": {"fields": [{"casino_logo": "assets/images/crown.png"}, {"raiting_casino": "9.3"}, {"bonus_code": "AX7772"}, {"bonus_summa": "200"}, {"bonus_min_depozit": "1000000"}, {"bonus_veizdjer": "4"}], "title": "Royal casino casino2"}, "15": {"fields": [{"casino_logo": "assets/images/crown.png"}, {"raiting_casino": "9.9"}, {"bonus_code": "AX777"}, {"bonus_summa": "200"}, {"bonus_min_depozit": "1000000"}, {"bonus_veizdjer": "4"}], "title": "Royal casino casino4"}}}
casino = data.get('casinos')

因为如果casino是OP呈现的初始dict,那么OP将得到另一个错误(TypeError),因为data['count_casinos']的值是intint没有__getitem__方法 这会引起TypeError。你知道吗

相关问题 更多 >