【问题标题】:AttributeError: 'dict' object has no attribute 'iterkeys'AttributeError:“dict”对象没有属性“iterkeys”
【发布时间】:2021-01-30 12:02:20
【问题描述】:

我正在 Python 中创建稳定的匹配项目,并尝试使用 iterkeys() 迭代 dict 的键,但出现以下错误: AttributeError: dict object has no attribute iterkeys

这是我的字典:

preferred_rankings_men = {
    'ryan':     ['lizzy', 'sarah', 'zoey', 'daniella'],
    'josh':     ['sarah', 'lizzy', 'daniella', 'zoey'],
    'blake':    ['sarah', 'daniella', 'zoey', 'lizzy'],
    'connor':   ['lizzy', 'sarah', 'zoey', 'daniella']
}

这是我的功能:

def init_free_men():
    for man in preferred_rankings_men.iterkeys():
        free_men.append(man)

【问题讨论】:

    标签: python python-3.x loops dictionary


    【解决方案1】:

    dict.iterkeys() 方法是deprecated in Python 3。等效代码是:

    for man in preferred_rankings_men:
    

    【讨论】:

      【解决方案2】:

      .iterkeys() 是旧的 Python 2 方法,用于获取键上的迭代器。在 Python 3 中,如果您必须使用方法调用,您将使用 .keys(),它获取 dicts 键的可迭代 view。也就是说,最简单的解决方案是根本不调用方法; dicts 已经是其键的可迭代对象,因此:

      def init_free_men():
          for man in preferred_rankings_men:
              free_men.append(man)
      

      在 Python 2 和 Python 3 上都能高效运行,甚至可以进一步简化为:

      def init_free_men():
          free_men.extend(preferred_rankings_men)
      

      【讨论】:

        猜你喜欢
        • 2018-09-02
        • 2020-09-11
        • 2021-06-07
        • 2021-12-28
        • 2019-03-31
        • 2020-11-22
        • 2023-03-17
        • 2017-07-13
        • 1970-01-01
        相关资源
        最近更新 更多