我有以下字典:
d1 = {}
我需要为其分配以下值,但只需为以下列表中的第一个n
值:
all_examples= ['A,1,1', 'B,2,1', 'C,4,4', 'D,4,5']
最终输出:d1={"A":[1,1],"B":[2,1]}
我有以下字典:
d1 = {'UID': 'A12B4', 'name': 'John', 'email': 'hi@example.com'}
如何创建字典d2,使得d2具有d1中前n个键和值?
我有一个以下字典: d1 = {}
我需要为它分配以下值,但只能为以下列表中的前n个值分配:
all_examples= ['A,1,1', 'B,2,1', 'C,4,4', 'D,4,5']
答案 0 :(得分:2)
抱歉,我很抱歉,但你不应该这样做。至少,不是库存如何创建字典d2,使得d2具有d1中前n个键和值?
dict
。原因是dict
无法保证订单,只要您添加或删除某个值,dict CAN 的顺序就会发生变化。
但如果你真的坚持可以做到:
>>> d1 = {1:'a', 3:'b', 2:'c', 4:'d'}
>>> d1
{1: 'a', 2: 'c', 3: 'b', 4: 'd'}
>>> d.keys()[:2]
[1, 2]
>>> {k : d[k] for k in d.keys()[:2]}
{1: 'a', 2: 'c'}
但我的建议是使用OrderedDict
对象,这将保证dict中元素的顺序:
>>> od = OrderedDict()
>>> od[1] = 'a'
>>> od[3] = 'b'
>>> od[2] = 'c'
>>> od[4] = 'd'
>>> od
OrderedDict([(1, 'a'), (3, 'b'), (2, 'c'), (4, 'd')])
>>> od.keys()[:2]
[1, 3]
>>> OrderedDict([(k, od[k]) for k in od.keys()[:2]])
OrderedDict([(1, 'a'), (3, 'b')])
好的,看起来你刚刚改变了从根本上你的问题,所以这里是新答案:
>>> all_examples= ['A,1,1', 'B,2,1', 'C,4,4', 'D,4,5']
>>> n = 2
>>> all_examples[:n]
['A,1,1', 'B,2,1']
这里是您如何选择最多n
列表值。
再一次,你正在改变你的问题...
Final output: d1={"A":[1,1],"B":[2,1]}
你可以这么做:
>>> {elt[0] : (elt[1], elt[2]) for elt in [elt.split(',') for elt in all_examples[:n]]}
{'A': ('1', '1'), 'B': ('2', '1')}
HTH