1. 程式人生 > >兩個LIST 合成一個DICT

兩個LIST 合成一個DICT

ListA = ['10', '10', '20', '20', '20', '24']
ListB = ['23', '44', '11', '19', '57', '3']

d = {}
for a, b in map(None, ListA, ListB):
if not d.has_key(a):
   d[a] = [b]
else:
   d[a].append(b)
print d

結果:

{'24': ['3'], '10': ['23', '44'], '20': ['11', '19', '57']}

以下也可以這樣:

vv=tuple(zip(ListA,ListB))

={}for

 x, y in vv:
d
.setdefault(x,[]).append(y)print d

結果是一樣的

vv =[('a',1),('a',2),('a',3),('b',1),('b',2),('c',1),]

={}for x, y in vv:
d
.setdefault(x,[]).append(y)print d

結果:{'a':[1,2,3],'c':[1],'b':[1,2]}

a = ['a1', 'a2', 'a3']
b = ['b1', 'b2']


for x, y in [(x,y) for x in a for y in b]:
    print x, y

結果 :

a1 b1
a1 b2
a2 b1
a2 b2
a3 b1
a3 b2
a1 b1
a2 b2

      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一般使用lambda
   如:
   >>> d={"ok":1,"no":2}
   對字典按鍵排序,用元組列表的形式返回
   >>> sorted(d.items, key=lambda d:d[0])
   [('no', 2), ('ok', 1)] 在 sqlalchemy 中的ADD_ALL 就類似這種格式

   對字典按值排序,用元組列表的形式返回
>>> sorted(d.items, key=lambda d:d[1])
   [('ok', 1), ('no', 2)]
3、元組列表排序

   >>> li=[(2,'a'),(4,'b'),(1,'d')]
   >>> li.sort()
   [(1, 'd'), (2, 'a'), (4, 'b')]
   如果字典按項的第一個元素排序的話,可以轉換成元組列表來進行
   >>> d={"ok":1,"no":2}
   >>> tt=[tuple(item) for item in d.items()]
   >>> tt.sort()
   [('no', 2), ('ok', 1)]