list和dict的遍歷和方法

2021-09-12 03:24:28 字數 3260 閱讀 4639

每個人在使用python的過程中都會遍歷list和dict.

list遍歷

最常用最簡單的遍歷list的方法12

345a = ["a", "b", "c", "d"]

# ****** iterate

for i in a:

print i

但是, 如果我需要拿到list的index, 很多人可能會這樣寫12

345a = ["a", "b", "c", "d"]

# index & value

for i in xrange(len(a)):

print i, a[i]

其實, python提供了乙個方法enumerate, 用法如下12

345a = ["a", "b", "c", "d"]

# iterate with index

for i, el in enumerate(a):

print i, el

上面兩種方式的結果相同12

340 a1 b

2 c3 d

這是一種更加方便便捷的方式, 雖然少寫不了幾個字元, 從**可讀性等方面來考量的話, 還是清晰很多的.

**應該讓人一目了然, 目的明確, 如果多種方式可以實現相同的功能, 那麼我們應該選擇一種大家更加容易理解的, enumerate就是這樣的方式.

1enumerate(iterable[, start]) -> iterator for index, value of iterable

第二個引數在很多時候也是很有用的, 比如我不希望從0開始, 希望從1開始12

345a = ["a", "b", "c", "d"]

# iterate with index

for i, el in enumerate(a, 1):

print i, el

輸出如下12

341 a2 b

3 c4 d

如果你使用range的話, 會蹩腳很多.

dict遍歷

dict最簡單的遍歷方式12

3456

7d =

for k in d:

print k

for k in d:

print k, d[k]

上面遍歷k和v的方式並不好, 顯得很蹩腳. dict本身提供了iteritems()方法, 可以做到k,v對遍歷.12

345d =

# d.viewitems()

for k, v in d.iteritems():

print k, v

dict還有個viewitems方法, 這個直接看到的是全部k,v對.

iteritems和viewitems的區別是什麼? 可以模擬range和xrange的區別.

大家肯定都了解range和xrange的區別, 在遍歷的時候盡量使用xrange, 特別是當遍歷的範圍比較大的時候.12

3456

78in [1]: print range(10)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

in [2]: print xrange(10)

xrange(10)

in [3]: print type(xrange(10))

range是直接返回乙個儲存全量資料的list, 空間複雜度是o(n), 而xrange是在遍歷中不斷生成的, 遍歷的效率更高, 而且空間複雜度是o(1) (個人理解, 沒看過具體實現).

iteritems和viewitems都可以完成遍歷, 二者的不同用下面的**來說明12

3456

78d =

# d.viewitems()

for k, v in d.iteritems():

print k, v

print type(d.viewitems()), type(d.itervalues())

print d.viewitems(), d.itervalues()

輸出如下12

3456

a 1c 3

b 2d 4

dict_items([('a', 1), ('c', 3), ('b', 2), ('d', 4)])

viewitems直接返回的是[('a', 1), ('c', 3), ('b', 2), ('d', 4)], 熟悉dict建構函式的人應該知道, 這也是一種構造dict的方式.12

d = dict(zip(("a", "b", "c", "d"), (1, 2, 3, 4)))

# d =

dict還有其他幾個方法12

34in [10]: import itertools

in [11]: ["".join(i) for i in itertools.product(("iter", "view"), ("keys", "values", "items"))]

out[11]: ['iterkeys', 'itervalues', 'iteritems', 'viewkeys', 'viewvalues', 'viewitems']

dict的完整示例**12

3456

78910

1112

1314

1516

1718

1920

2122

2324

2526

d = dict(zip(("a", "b", "c", "d"), (1, 2, 3, 4)))

# d =

for k in d:

print k

# d.viewkeys()

for k in d.iterkeys():

print k

print type(d.viewkeys()), type(d.iterkeys())

print d.viewkeys(), d.iterkeys()

# d.viewvalues()

for v in d.itervalues():

print v

print type(d.viewvalues()), type(d.itervalues())

print d.viewvalues(), d.itervalues()

# d.viewitems()

for k, v in d.iteritems():

print k, v

print type(d.viewitems()), type(d.itervalues())

print d.viewitems(), d.itervalues()

list方法 dict方法

d.get key,0 同dict key 多了個沒有則返回預設值,0。沒有則拋異常 d.has key key 有該鍵返回true,否則false d.keys 返回字典鍵的列表 d.values d.items d.update dict2 增加合併字典 d.popitem 得到乙個pair,並...

python中dict和list排序

1 list排序 列表的排序是python內建功能,自身含有sort方法 如 s 2,1,3,0 s.sort 0,1,2,3 2 dict排序 對字典的排序,因為每乙個項包括乙個鍵值對,所以要選擇可比較的鍵或值進行排序 sorted iterable cmp key reverse cmp和key...

pandas 讀取dict和list操作

在用pandas讀取dict和list的時候,依據結構和需求不同,我們可能需要生成不同格式的dataframe,這裡我總結了下我最近遇到的一些讀取操作 這裡我們以乙個字典為資料,看下不同操作的結果有何不同 data 1 直接呼叫dataframe進行讀取的話,生成的dataframe結構如下 或者p...