“集合是可迭代的,但是集合不是序列”,我有一些疑问

时间:2020-06-03 08:34:12

标签: python

我正在阅读流利的python书。它说诸如listset之类的所有集合都是可迭代的。但是set不是序列。字典也不是序列,也就是说,序列中的项不能通过索引访问,例如set[9],对吗?有点像可以遍历链接列表和列表,但是只有数组才能通过索引快速获取值。我想知道如何遍历字典?

请原谅我的英语不好

3 个答案:

答案 0 :(得分:1)

Python中的所有容器都可以像这样遍历:

d = { 1: 'Blue', 2: 'Green' }
for k in d:
  print(k)

这将迭代字典的,即1和2,等效于此:

for k in d.keys():
  print(k)

如果仅需要,则可以这样做:

for v in d.values():
  print(v)

如果同时需要键和值,请使用以下命令:

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

序列与无序容器(例如set或dict)之间的主要区别是遍历期间没有保证的顺序。

有关dict API的更多详细信息,请参见https://docs.python.org/3.8/library/stdtypes.html#dict

答案 1 :(得分:0)

如评论中所述,可以在docs中找到您问题的答案。答案是

d = {'a': 'b', 'c': 'd'}

# Way 1
for key in d:
    print(key, d[key])

# Way 2
for key, value in d.items():
    print(key, value)

答案 2 :(得分:0)

python中的不同结构

  • 集合是唯一对象的无序集合。它们可以被迭代但不能像您在列表数组上的操作那样被索引。

  • 词典类似于其他语言的哈希或地图。它是无序的,由键值对组成。可以通过唯一键访问该值 在字典中。与集合不同,它可以迭代和索引 通过其键之一。

  • 列表就像C ++中的数组或向量一样。可以通过从0到length-1的数字对它们进行迭代和索引。

因此,提一个问题,可以使用其键,值或键值对遍历字典。以下是遍历字典的3种方法:

for key in dict : 
    print(key)


for value in dict.values() :
    print(value)

for key,value in dict.items() :
    print(key,value)

希望这会有所帮助!

相关问题