Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中为特定范围创建字典_Python_List_Dictionary - Fatal编程技术网

在Python中为特定范围创建字典

在Python中为特定范围创建字典,python,list,dictionary,Python,List,Dictionary,我有一本字典: d1 = {} d1 = {'UID': 'A12B4', 'name': 'John', 'email': 'hi@example.com'} 我需要为其分配以下值,但仅分配以下列表中的第一个n值: all_examples= ['A,1,1', 'B,2,1', 'C,4,4', 'D,4,5'] all_examples= ['A,1,1', 'B,2,1', 'C,4,4', 'D,4,5'] 最终输出:d1={“A”:[1,1],“B”:[2,1]}

我有一本字典:

d1 = {}
d1 = {'UID': 'A12B4', 'name': 'John', 'email': 'hi@example.com'}
我需要为其分配以下值,但仅分配以下列表中的第一个
n
值:

all_examples=   ['A,1,1', 'B,2,1', 'C,4,4', 'D,4,5']
all_examples=   ['A,1,1', 'B,2,1', 'C,4,4', 'D,4,5']
最终输出:
d1={“A”:[1,1],“B”:[2,1]}


问题的第一版: 我有一本字典:

d1 = {}
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']
all_examples=   ['A,1,1', 'B,2,1', 'C,4,4', 'D,4,5']
如何创建字典d2,使d2具有来自d1的前n个键和值

很抱歉告诉你,但你不应该那样做。至少,不要使用股票
dict
。原因是在
dict
中不保证顺序,并且无论何时添加或删除值,dict的顺序都可以更改

但如果你真的坚持,你可以:

>>> 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')}

如何创建字典d2,使d2具有来自d1的前n个键和值

很抱歉告诉你,但你不应该那样做。至少,不要使用股票
dict
。原因是在
dict
中不保证顺序,并且无论何时添加或删除值,dict的顺序都可以更改

但如果你真的坚持,你可以:

>>> 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

你不能,因为dict是一个无序的集合。@AvinashRaj对我的问题做了一些更改,你的预期输出是什么?呃@ThaimanThatte你很可爱,但你刚刚彻底改变了你问题的含义。我知道做这样的编辑有点勉强,希望我不会因此受到指责,但我认为不必查看编辑历史记录就能理解答案是什么是有用的。因为dict是一个无序的集合,所以你不能这样做。@AvinashRaj对我的问题做了一些更改,你的预期输出是什么?呃@ThaimanThatte你很可爱,但是你刚刚从根本上改变了你问题的含义。我知道做这样的编辑是有限度的,我希望我不会因此受到指责,但我认为不必查看编辑历史来理解答案是什么是有用的。谢谢@zmo。对不起,我想用一种更简单的方法来创建字典approveded@zmo。对不起,我想用一种更简单的方法来创建字典