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))
d = {}
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),]
d = {}
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)]