首页 > 解决方案 > 级联下拉菜单显示字典/数组 - Python(Jupyter Notebook)

问题描述

我正在尝试在 Jupyter Notebook 上创建一系列下拉菜单。

前几个下拉列表工作正常,但在最后一个下拉列表开始变得不稳定,输出被读取为字符串而不是字典

代码如下:

#Initialise GUI
from ipywidgets import interact,Dropdown
import ipywidgets as widgets

#Initialise Dictionaries
NAICSd = {"21-Mining,Quarrying,and oil and gas extraction(8)":0.08,
      "11-Agriculture,forestry,fishing and hunting(9)":0.09,
      "55-Management of companies and enterprises(10)":0.08,
      "62-Healthcare and social assistance(10)":0.1,
      "22-Utilities(14)":0.14,
      "92-Public Administration(15)":0.15,
      "54-Professional,scientific and technical services(19)":0.19,
      "42-Wholesale trade(19)":0.19,
      "31-Manufacturing(19)":0.19,
      "32-Manufacturing(16)":0.16,
      "33-Manufacturing(14)":0.14,
      "81-Other Sevices Exept Public Administration(20)":0.2,
      "71-Arts,Entertainment and Recreation(21)":0.21,
      "72-Accommodation and Food Services(22)":0.22,
      "44-Retail Trade(22)":0.22,
      "45-Retail Trade(23)":0.23,
      "23-Construction(23)":0.23,
      "56-Administrative/Support & Waste Management/Remediation Service(24)":0.24,
      "61-Educational Services(24)":0.24,
      "51-Information (25)":0.25,
      "48-Transportation and warehousing(27)":0.27,
      "49-Transportation and warehousing(23)":0.23,
      "52-Finance and Insurance(28)":0.28,
      "53-Real Estate and rental and leasing(29)":0.29}

Stated = {"Undefined(28)":0.28,
       "Alaska(10)":0.1,
       "Alabama(18)":0.18,
       "Arkansas(18)":0.18,
       "Arizona(20)":0.2,
       "California(20)":0.2,
       "Colorado(18)":0.18,
       "Connecticut(13)":0.13,
       "D.C.(8)":0.08,
       "Delaware(18)":0.18,
       "Florida(28)":0.28,
       "Georgia(27)":0.27,
       "Hawaii(16)":0.16,
       "Iowa(13)":0.13,
       "Idaho(15)":0.15,
       "Illonois(23)":0.23,
       "Indiana(18)":0.18,
       "Kansas(13)":0.13,
       "Kentucy(20)":0.20,
       "Louisiana(18)":0.18,
       "Massachusetts(15)":0.15,
       "Maryland(20)":0.20,
       "Maine(9)":0.09,
       "Michigan(23)":0.23,
       "Minnesota(13)":0.13,
       "Missouri(15)":0.15,
       "Missisipi(15)":0.15,
       "Montana(8)":0.08,
       "North Carolina(20)":0.2,
       "North Dakota(8)":0.08,
       "Nebraska(15)":0.15,
       "New Hampshire(10)":0.1,
       "New Jersey(20)":0.2,
       "New Mexico(10)":0.1,
       "Nevada(23)":0.23,
       "New York(20)":0.2,
       "Ohio(18)":0.18,
       "Oklahoma(13)":0.13,
       "Oregon(17)":0.17,
       "Pennsylvania(15)":0.15,
       "Rhode Island(8)":0.08,
       "South Carolina(20)":0.2,
       "South Dakota(8)":0.08,
       "Tennesee(23)":0.23,
       "Texas(20)":0.2,
       "Utah(18)":0.18,
       "Virginia(19)":0.19,
       "Vermont(8)":0.08,
       "Washington(13)":0.13,
       "Wisconsin(15)":0.15,
       "West Virginia(15)":0.15,
       "Wyoming(8)":0.18
      }

Businessd = {"New Business <2 years(18.98)":0.1898,
         "Normal Business >= 2 years (17.36)":0.1736}

BackedRealEstated = {"Yes(1.64)":0.0164,
                 "No(21.16)":0.2116}

IsRecessiond ={"Yes(32.21)":0.3221,
            "No(16.63)":0.1663}

SBARatiod = {"More than 50%(25)":0.25,
         "50% or less(40)":0.4}

NAICSList = Dropdown(options = NAICSd)
StateList = Dropdown(options = Stated)
BusinessList = Dropdown(options = Businessd)
BackedRealEstateList = Dropdown(options = BackedRealEstated)
IsRecessionList = Dropdown(options = IsRecessiond)
SBARatioList = Dropdown(option = SBARatiod)

@interact(Sector = NAICSList, US_State=StateList, New_Business=BusinessList, Real_Estate_Backed=BackedRealEstateList,
       Recession = IsRecessionList, Guarantee_Ratio = SBARatioList)

def print_dropdown(Sector, US_State, New_Business, Real_Estate_Backed, Recession, Guarantee_Ratio):
  NAICSList.options = NAICSd
  StateList.options = Stated
  BusinessList = Businessd
  BackedRealEstateList = BackedRealEstated
  IsRecessionList = IsRecessiond
  Guarantee_Ratio = SBARatiod
  print(Sector, US_State, New_Business, Real_Estate_Backed, Recession, Guarantee_Ratio)

Sector、US_State、New_Business、Real_Estate_Backed 和 Recession 都返回一个浮点数,这就是我想要的。但是 Guarantee_Ratio 返回 '{'超过 50%(25)': 0.25, '50% 或更少(40)': 0.4}'

标签: pythonjupyter-notebook

解决方案


我看到了我的问题。我将 Guarantee_Ratio 变量与列表混淆了

def print_dropdown(Sector, US_State, New_Business, Real_Estate_Backed, Recession, Guarantee_Ratio):
    NAICSList = NAICSd
    StateList = Stated
    BusinessList = Businessd
    BackedRealEstateList = BackedRealEstated
    IsRecessionList = IsRecessiond
    SBARatioList = SBARatiod
    print(Sector, US_State, New_Business, Real_Estate_Backed, Recession, Guarantee_Ratio)]

推荐阅读