【问题标题】:Using the same key in two dictionaries (Python)在两个字典中使用相同的键(Python)
【发布时间】:2013-08-17 05:16:51
【问题描述】:

这是我所拥有的:

from pprint import pprint

Names = {}
Prices = {}
Exposure = {}

def AddName():
    company_name = input("Please enter company name: ")
    return company_name

def AddSymbol(company_name):
    stock_symbol = input("Please enter a stock symbol: ")
    Names[stock_symbol] = company_name
    return Names

^^ 这会将 Names 字典更新为 {symbol:company name}

def AddPrices(stock_symbol):
    buy = float(input("Please enter buying price of stock: "))
    sell = float(input("Please enter current price of stock: "))
    Prices[stock_symbol] = buy, sell
    return Prices

^^ 这会生成一个 TypeError: unhashable type: 'dict' - 我想要的是更新价格字典,如 {symbol: buy price, sell price, symbol2: buy price, sell price etc..}

def printDicts(Names, Prices):
    '''
    For debug purposes, prints out contents of dictionaries
    '''
    print( "Names is now:" )
    pprint(Names)

    print("Prices now:")
    pprint(Prices)



def main():
    company_name = AddName()
    stock_symbol = AddSymbol(company_name)
    AddPrices(stock_symbol)
    printDicts(Names, Prices)

main()

作为编程新手,我不完全确定如何解决这个问题。感谢您的帮助!

【问题讨论】:

    标签: python hash dictionary key


    【解决方案1】:

    AddSymbol(company_name) 中,您返回整个Names 字典。然后将整个字典传递给AddPrices 函数。 AddPrices 意味着将股票代码传递到其中(str),但您传递的是dict。您可以修改AddSymbol 以返回stock_symbol 而不是Names

    我还建议您的函数名称使用驼峰式大小写,以小写字母开头并将每个单词的第一个字母大写。这是大多数程序员为了一致性而做的事情,养成良好的习惯是件好事。

    【讨论】:

    • 太棒了!现在完美运行!感谢您提供有关如何格式化我的名字的信息。
    【解决方案2】:

    您的AddSymbol 返回Names,即字典。字典不能用作字典键。

    只需在AddSymbol 中使用return stock_symbol

    【讨论】:

      【解决方案3】:

      也许您要在AddSymbol 函数中返回的是符号而不是另一个字典?在这种情况下,你这样做:

      def AddSymbol(company_name):
          stock_symbol = input("Please enter a stock symbol: ")
          Names[stock_symbol] = company_name
          return stock_symbol
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-12
        • 1970-01-01
        • 2021-11-26
        • 2020-03-29
        相关资源
        最近更新 更多