enumerate()用于python中的字典

时间:2016-03-27 06:03:23

标签: python python-3.x dictionary enumerate

我知道我们使用enumerate来迭代列表但是我在字典中尝试了它并没有给出错误。

CODE:

enumm = {0: 1, 1: 2, 2: 3, 4: 4, 5: 5, 6: 6, 7: 7}

for i, j in enumerate(enumm):
    print(i, j)

输出:

0 0

1 1

2 2

3 4

4 5

5 6

6 7

有人可以解释输出吗?

11 个答案:

答案 0 :(得分:42)

输出的第一列是for k, v in enumm.items(): print(k, v) 中每个项目的索引,第二列是其键。如果要迭代字典,请使用.items():

0 1
1 2
2 3
4 4 
5 5
6 6
7 7

输出应该如下:

let alert = UIAlertController(title: "No internet Connection", message: "Make sure your device is connected to the internet.", preferredStyle: .alert)

    if Reachability.isConnectedToNetwork() == true {
        print("Internet connection OK")

        alert.dismiss(animated: true, completion: nil)

    } else {
        print("Internet connection FAILED")
        alert.dismiss(animated: true, completion: nil)
        self.present(alert, animated: true, completion: nil)
    }

答案 1 :(得分:18)

除了已经提供的答案外,Python中还有一个非常好的模式,可让您枚举字典的键和值。

通常情况下,您枚举字典的键

example_dict = {1:'a', 2:'b', 3:'c', 4:'d'}

for i, k in enumerate(example_dict):
    print(i, k)

哪个输出:

0 1
1 2
2 3
3 4

但是,如果您想通过键和值枚举,则可以这样:

for i, (k, v) in enumerate(example_dict.items()):
    print(i, k, v)

哪个输出:

0 1 a
1 2 b
2 3 c
3 4 d

答案 2 :(得分:9)

for k,v in dict.iteritems():
    print(k,v)

答案 3 :(得分:5)

我只是想补充一下,如果您想枚举字典的索引,键和值,则for循环应如下所示:

for index, (key, value) in enumerate(your_dict.items()):
    print(index, key, value)

答案 4 :(得分:3)

在列表上工作时,

enumerate()实际上给出了索引和列表中项目的值。 例如:

l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i, j in enumerate(list):
    print(i, j)

给出

0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9

其中第一列表示项目的索引,第二列表示项目本身。

在字典中

enumm = {0: 1, 1: 2, 2: 3, 4: 4, 5: 5, 6: 6, 7: 7}
for i, j in enumerate(enumm):
    print(i, j)

它给出了输出

0 0
1 1
2 2
3 4
4 5
5 6
6 7

其中第一列给出key:value对的索引,第二列表示字典keys的{​​{1}}。

因此,如果您希望第一列为enumm,第二列为keys,请更好地尝试values (Python 2)dict.iteritems()(Python 3) )

dict.items()

输出

for i, j in enumm.items():
    print(i, j)

答案 5 :(得分:3)

由于您使用的是enumerate,因此i实际上是密钥的索引,而不是密钥本身。

因此,即使没有键3,您也会在3 4行的第一列中得到3

enumerate遍历数据结构(列表或字典),同时还提供当前的迭代编号。

因此,此处的列是迭代号,后跟字典enum中的键

其他解决方案已经展示了如何在键和值对之间进行迭代,因此在此我不再重复。

答案 6 :(得分:2)

这肯定看起来很混乱。所以这就是正在发生的事情。枚举的第一个值(在这种情况下为i)返回从0开始的下一个索引值,因此0,1,2,3,......无论字典中的内容如何,​​它都将始终返回这些数字。枚举的第二个值(在本例中为j)是返回字典/ enumm中的值(我们称之为Python中的字典)。你真正想做的是roadrunner66的回应。

答案 7 :(得分:2)

Python3:

一种解决方案:

CLOSE DATABASES
USE Ruta + "FILE.dbf" IN 0 ALIAS d1
USE Ruta2 + "REFERENCE.dbf" IN 0 ALIAS d2
SELECT d1
ALTER TABLE d1 ADD COLUMN ship c(10) &&create new column to fill in the reference
SELECT d2
GO TOP
DO WHILE !EOF()
  SELECT d1
  REPLACE d1.ship WITH d2.ship2 FOR d1.Mp_id == d2.po
  REPLACE d1.ship WITH d2.ship2 FOR d1.prod_code == d2.prod AND d1.Mp_id != d2.po
  SELECT d2
  SKIP
ENDDO
CLOSE DATABASES ALL

enumm = {0: 1, 1: 2, 2: 3, 4: 4, 5: 5, 6: 6, 7: 7}
for i, k in enumerate(enumm):
    print("{}) d.key={}, d.value={}".format(i, k, enumm[k]))

另一个例子:

Output:
0) enumm.key=0, enumm.value=1
1) enumm.key=1, enumm.value=2
2) enumm.key=2, enumm.value=3
3) enumm.key=4, enumm.value=4
4) enumm.key=5, enumm.value=5
5) enumm.key=6, enumm.value=6
6) enumm.key=7, enumm.value=7

d = {1 : {'a': 1, 'b' : 2, 'c' : 3},
     2 : {'a': 10, 'b' : 20, 'c' : 30}
    }    
for i, k in enumerate(d):
        print("{}) key={}, value={}".format(i, k, d[k])

答案 8 :(得分:0)

  1. 迭代Python dict意味着迭代其键,与dict.keys()完全相同
  2. 键的顺序由实现代码决定,您不能指望某些特定的顺序:
      

    键和值以任意顺序迭代   非随机的,在Python实现中各不相同,并且取决于   字典的插入和删除历史。如果键,值和   对项目视图进行迭代而不对其进行干预修改   字典,项目的顺序将直接对应。

  3. 这就是为什么你在第一列看到索引0到7的原因。它们由enumerate生成,并且始终按正确的顺序排列。您还可以在第二列中看到dict的键0到7。它们没有排序。

答案 9 :(得分:0)

d = {0:'零','0':'零',1:'一','1':'一'}

print(“枚举d的列表=”,列表(enumerate(d.items())))

输出: 列举的d = [[0,(0,'零')),(1,('0','零')),(2,(1,'一')),(3,('1 ','ONE'))]

答案 10 :(得分:0)

您可能会发现在键内包含索引很有用:

PlaylistItems.list

输出:

d = {'a': 1, 'b': 2}
d = {(i, k): v for i, (k, v) in enumerate(d.items())}