【问题标题】:Find if a value in a list exists in a dictionary in python查找列表中的值是否存在于python的字典中
【发布时间】:2022-01-10 03:51:08
【问题描述】:

我有一个类似的列表

    myList= ['France', 'Brazil', 'Armenia']

还有一个像这样的字典:

    countryDict = {'Argentina':10, 'Spain':23, 'France':66, 'Portugal:10', 'Brazil':120, 'Armenia':99}

如果字典中的键与列表匹配,我如何打印它的名称并用它打印值?

我试过这个:

    for name in countries_avg_dict:
            if name in country_List:
                print(countries_avg_dict[name])

但是,这不起作用。有什么帮助吗?

我收到一个错误

     DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.

【问题讨论】:

  • 为什么不简单地遍历 list,从 dict 中获取该键的值,然后打印出来?
  • 在解决了字典定义和名称不匹配的问题后,您的代码运行良好。请确保您的 minimal reproducible example 确实重现了您的问题
  • 您显示的错误只能由 Numpy 数组引起,而不是内置 list。请确保您拥有reproducible example
  • 但是是的,迭代列表而不是字典会更干净。

标签: python list dictionary


【解决方案1】:

您需要遍历myList 并检查其中的国家/地区是否在countryDict

for country in myList:
    if country in countryDict:
        print(country, countryDict[country])

输出:

France 66
Brazil 120
Armenia 99

【讨论】:

    【解决方案2】:

    您不需要执行嵌套循环来查找它们是否在字典中,只需使用 bool() 运算符来查找元素是否存在,您可以在 try-except 中执行此操作以捕获如果字典中不存在该元素,则出现 KeyError

    用于每个循环:

    myList= ['France', 'Brazil', 'Armenia', 'FakeCountry']
    countryDict = {'Argentina':10, 'Spain':23, 'France':66, 'Portugal':10, 'Brazil':120, 'Armenia':99}
    
    for item in myList:
        try:
            print(item, bool(countryDict[item]))
        except KeyError:
            print(item, False)
    

    将索引用于:

    myList= ['France', 'Brazil', 'Armenia', 'FakeCountry']
    countryDict = {'Argentina':10, 'Spain':23, 'France':66, 'Portugal':10, 'Brazil':120, 'Armenia':99}
    
    for i in range(len(myList)):
        try:
            print(myList[i], bool(countryDict[myList[i]]))
        except KeyError:
            print(myList[i], False)
    

    【讨论】:

      【解决方案3】:

      我相信这可能会有所帮助:

      >>> for k,v in countryDict.items():
      ...   if k in myList:
      ...     print(f"{k}: {v}")
      ... 
      France: 66
      Brazil: 120
      Armenia: 99
      

      如果这对您有用,请告诉我。 ~X

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-18
        • 1970-01-01
        • 1970-01-01
        • 2018-04-10
        • 2018-08-12
        • 2019-02-13
        • 2013-05-07
        相关资源
        最近更新 更多