【问题标题】:Iterate over dictionary feature in Python迭代Python中的字典功能
【发布时间】:2020-01-29 08:27:06
【问题描述】:

我的要求是通过 Python 字典功能从范围 (1, 60) 迭代 for 循环打印出以下映射。基本上我想要将 1 映射到 10001,将 2 映射到 10002 的输出............将 60 映射到 10060

{ 1: 10001, 2: 10002, 3: 10003, 4: 10004 …. …. 58: 10058, 59: 10059, 60: 10060 }

我是字典功能的新手。谁能帮我退回类似上面的东西?

【问题讨论】:

  • my_dic = dict(zip(range(1, 61), range(10001, 10061)) 试试看。
  • 使用这个:{i:i+10000 for i in range(1,61)} 这是一个 dict 理解。无需为此使用 zip 或多个范围。
  • 您有这本词典并想打印它,还是要创建这本词典?请提供代码示例和预期输出。
  • @TomKarzes 为什么要避免这些? IMO 可能更快且可读性更好
  • @juanpa.arrivillaga 主要原因是清晰。有两个参数:60和10000。我的版本比较简洁,每个参数使用一次。你必须努力才能弄错。 dict/zip 版本使用 60 两次(61 和 10061)和 10000 两次(10001 和 10061)。你必须努力才能弄错。话虽如此,我的 Python 2 更快,你的 Python 3 更快(字典理解在 Python 3 中变慢,而 dict/zip 变得更快)。不知道为什么理解比以前慢。

标签: python python-3.x dictionary for-loop


【解决方案1】:

你可以用字典推导来做到这一点

d = {i: i + 10000 for i in range(1, 61)}

【讨论】:

    【解决方案2】:

    这是一个使用 zip() 的快速、干净的变体:

    dict(zip(range(1, 61), range(10_001, 10_061)))
    

    在风格上,在第二部分使用itertools.count() 可能会更好:

    dict(zip(range(1, 61), count(10_001)))
    

    希望这会有所帮助:-)

    【讨论】:

      【解决方案3】:

      试试这个:

      for key, value in your_dictionary.items():
          print(f"{key} is mapped to {value}")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-21
        • 2018-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多