循环遍历字典并列出值的值和索引

时间:2018-06-07 13:07:47

标签: python-3.x loops

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

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等(在第二列中)是值的相应索引位置。非常感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

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))

答案 1 :(得分:1)

您已经证明可以迭代字典了。那么剩下的就是用索引打印列表。 Python有一个很好的功能,叫做enumerate

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

3 0
3 1
5 2

Enumerate将任何iteratable转换为索引和值对。因此,它不仅适用于列表,而且适用于您可以迭代的任何内容。

答案 2 :(得分:1)

单线解决方案:

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)]]

答案 3 :(得分:-1)

不确定这是否是你的事,但这将打印dict和索引中的项目:

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)