我知道我们使用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
有人可以解释输出吗?
答案 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)
dict.keys()
完全相同键和值以任意顺序迭代 非随机的,在Python实现中各不相同,并且取决于 字典的插入和删除历史。如果键,值和 对项目视图进行迭代而不对其进行干预修改 字典,项目的顺序将直接对应。
这就是为什么你在第一列看到索引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())}