[英]List to dictionary with keys and values
我有一个列表(myarray)看起来像这样,
[u 'item-01', 52, u 'item-02', 22, u 'item-03', 99, u 'item-04', 84]
我正在尝试将其转换为具有键和值的字典。
我试过循环,但没有给我预期的结果,
mydict = {}
for k,v in myarray:
mydict[k] = v
简单:使用zip
和扩展切片。
mydict = dict(zip(myarray[::2], myarray[1::2]))
第一个扩展切片list
了所有偶数索引,第二个是奇数, zip
将它们组合成tuple
,而dict
构造函数可以采用可迭代的配对值并使用它们作为键/值对进行初始化。
注意:Padraig使用iter
的解决方案可以更快地工作(并处理非序列迭代),虽然它不太直观(并不像编写的那样简洁)。 当然,它可以通过使用list
乘法复制引用的行为而牺牲变得更加直观(参见序列操作表中的注释2;在itertools
grouper
找到它的另一个用途的示例) 食谱 ):
mydict = dict(zip(*[iter(myarray)]*2))
l = [u'item-01', 52, u'item-02', 22, u'item-03', 99, u'item-04', 84]
it = iter(l)
print(dict(zip(it, it)))
{u'item-04': 84, u'item-01': 52, u'item-03': 99, u'item-02': 22}
zip(it, it)
创建组合每两个元素的对,在结果上调用dict使用每个元组的第一个元素作为键,第二个元素作为vale。
In [16]: it = iter(l)
In [17]: l = list(zip(it,it))
In [18]: l
Out[18]: [('item-01', 52), ('item-02', 22), ('item-03', 99), ('item-04', 84)]
In [19]: dict(l)
Out[19]: {'item-01': 52, 'item-02': 22, 'item-03': 99, 'item-04': 84}
像你自己的代码一样使用for循环:
it = iter(l)
d = {}
for k, v in it:
d[k] = v
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.