【问题标题】:Loop through a dictionary and list values and index of the values遍历字典并列出值和值的索引
【发布时间】:2018-06-08 01:16:21
【问题描述】:

我正在尝试遍历字典并返回值和值的相应索引。到目前为止,我能够返回整个列表。

cdict = {'ZS': [3,3,3,5,5,5,5,7,7,7,7,8,8,11,11,11,11,11,11,1,1,1,1,3]}

for k, v in cdict.items():
    print (v)

我希望能够返回以下内容: 3, 0 3, 1 3, 2 5, 3 ... 3, 23. 其中 0,1,2,3 等(在第二列中)是值的相应索引位置。非常感谢任何帮助。

【问题讨论】:

    标签: python-3.x loops


    【解决方案1】:
    cdict = {'ZS': [3,3,3,5,5,5,5,7,7,7,7,8,8,11,11,11,11,11,11,1,1,1,1,3]}
    
    for k, v in cdict.items():
        for idx in range(len(v)):
            print('{}, {}'.format(v[idx], idx))
    

    【讨论】:

    • 你太快了,我正打算发同样的
    • 谢谢 - 非常感谢
    【解决方案2】:

    您已经证明可以遍历字典。所以剩下的就是打印带有索引的列表。 Python 有一个很好的函数,叫做enumerate

    for (i, v) in enumerate([3,3,5]):
        print(v, i)
    
    3 0
    3 1
    5 2
    

    Enumerate 将任何可迭代对象转换为索引和值对。所以它不仅适用于列表,还适用于任何你可以迭代的东西。

    【讨论】:

      【解决方案3】:

      单线解决方案:

      a = list(map(lambda v: list(map(lambda x: print("{}, {}".format(*x[::-1])) or x[::-1], enumerate(v))), cdict.values()))
      

      奖励:在a 你可以找到以下列表: [[(3, 0), (3, 1), (3, 2), (5, 3), (5, 4), (5, 5), (5, 6), (7, 7), (7, 8), (7, 9), (7, 10), (8, 11), (8, 12), (11, 13), (11, 14), (11, 15), (11) , 16), (11, 17), (11, 18), (1, 19), (1, 20), (1, 21), (1, 22), (3, 23)]]

      【讨论】:

        【解决方案4】:

        不确定这是否是您的目标,但这会打印字典和索引中的项目:

        cdict = {'ZS': [3,3,3,5,5,5,5,7,7,7,7,8,8,11,11,11,11,11,11,1,1,1,1,3]}
        print(cdict['ZS'])
        index = -1
        for e in cdict['ZS']:
            index += 1
            print("Index:",index, "item", e)
        

        【讨论】:

          猜你喜欢
          • 2015-09-27
          • 2019-09-05
          • 1970-01-01
          • 1970-01-01
          • 2015-08-07
          • 2021-06-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多