2024-04-18 18:09:17 发布
网友
如果你有三张单子,最简单的方法是什么
list [1,2,3] [a,b,c] [5,6,7]
用字典把它画出来
{1:{'a':5}, 2:{'b':6}, 3:{'c':7}}
我觉得你得用拉链。。你知道吗
在python中,字典理解是不可能的,如何做到这一点呢
字典没有顺序,所以我假设您希望根据排序键的顺序来映射它们。您可以通过以下方法来实现这一点:
>>> lst = [1, 2, 3] >>> dct = {'a': 5, 'b': 6, 'c': 7} >>> {i: {k: dct[k]} for i, k in zip(lst, sorted(dct))} {1: {'a': 5}, 2: {'b': 6}, 3: {'c': 7}}
如果决定使用元组列表而不是字典来维持顺序,可以执行以下操作:
>>> lst = [1, 2, 3] >>> tups = [('a', 5), ('b', 6), ('c', 7)] >>> {i: {k: v} for i, (k, v) in zip(lst, tups)} {1: {'a': 5}, 2: {'b': 6}, 3: {'c': 7}}
更新中的3-list案例很简单,有zip:
zip
d = {k:{k1:v1} for k,k1,v1 in zip(list1,list2,list3)}
第一个和第二个列表中的值是否可以重复,例如:
a, b, c = [3,1,2,3,1], ['a','a','b','c','d'], [1,5,6,7,8]
如果您需要订单:
from collections import OrderedDict od = OrderedDict() for x, y, z in zip(a, b, c): if x not in od: od[x] = OrderedDict() od[x][y] = z print od
输出:
OrderedDict([(3, OrderedDict([('a', 1), ('c', 7)])), (1, OrderedDict([('a', 5), ('d', 8)])), (2, OrderedDict([('b', 6)]))])
如果您不需要订购:
from collections import defaultdict dd = defaultdict(dict) for x, y, z in zip(a,b,c): dd[x][y] = z print dd
defaultdict(<type 'dict'>, {1: {'a': 5, 'd': 8}, 2: {'b': 6}, 3: {'a': 1, 'c': 7}})
字典没有顺序,所以我假设您希望根据排序键的顺序来映射它们。您可以通过以下方法来实现这一点:
如果决定使用元组列表而不是字典来维持顺序,可以执行以下操作:
更新中的3-list案例很简单,有
zip
:第一个和第二个列表中的值是否可以重复,例如:
如果您需要订单:
输出:
如果您不需要订购:
输出:
相关问题 更多 >
编程相关推荐