Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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_Python 3.x - Fatal编程技术网

纯Python列表字典

纯Python列表字典,python,python-3.x,Python,Python 3.x,我有一本字典,其结构如下:未确定键数: dico={2017:[a,b,c,d…],2018:[1,2,3,4,5,6…] 我想要的输出如下: 2017 , 2018 a , 1 b , 2 c , 3 d , 3 e , 4 有内置的功能吗?我想用纯python来做,至少没有熊猫 我可以使用zip: 对于zip*dico.values中的v: printv 我得到的结果是: ('a', '1') ('b', '2') ('c', '3') ('d',

我有一本字典,其结构如下:未确定键数:

dico={2017:[a,b,c,d…],2018:[1,2,3,4,5,6…] 我想要的输出如下:

2017 , 2018 
 a   ,  1
 b   ,  2
 c   ,  3
 d   ,  3
 e   ,  4
有内置的功能吗?我想用纯python来做,至少没有熊猫

我可以使用zip:

对于zip*dico.values中的v: printv 我得到的结果是:

('a', '1')
('b', '2')
('c', '3')
('d', '4')
('e', '5')
('f', '6')
差不多了!事实上,我想要的是根据索引并排打印列表中的每个项目

我也试过,但不是很优雅:

for v in zip(*dico.values()):
    temp = ""
    for vv in v:
        temp += vv +','
    print(temp)

只需打印元素即可。尝试:

对于zip*dico.values中的v: 对于v中的元素: printelement,结束=
只需打印元素即可。尝试:

对于zip*dico.values中的v: 对于v中的元素: printelement,结束=
如果v中有很多值,可以这样做:

for v in zip(*dico.values()):
   print(*v)

*v语法将为您解压列表/元组。

如果v中有很多值,您可以这样做:

for v in zip(*dico.values()):
   print(*v)

*v语法将为您解压列表/元组。

您可以使用格式化字符串和zip解决方案尝试此操作:

dico = { 2017 : ['a','b','c','d'], 2018: [1,2,3,4,5,6] }

print(' , '.join(map(str,dico.keys())))
for x,y in zip(*dico.values()):
   print('{0: <5},{1:5}'.format(x,y) )
编辑: 由于在您发布的答案中,没有考虑列的宽度和对齐方式,因此只有一个“,”连接,您可以尝试以下方法:

dico = { 2017 : ['a','b','c','d'], 2018: [1,2,3,4,5,6],2019: [1,2,3,4,5,6],2020: [1,2,3,4,5,6] }

keys=','.join(map(str,dico.keys()))
print(keys)

for v in zip(*dico.values()):  
    print(*v, sep = ",")
输出:

2017 , 2018
a    ,    1
b    ,    2
c    ,    3
d    ,    4
2017,2018,2019,2020
a,1,1,1
b,2,2,2
c,3,3,3
d,4,4,4

您可以尝试使用格式化字符串和zip解决方案:

dico = { 2017 : ['a','b','c','d'], 2018: [1,2,3,4,5,6] }

print(' , '.join(map(str,dico.keys())))
for x,y in zip(*dico.values()):
   print('{0: <5},{1:5}'.format(x,y) )
编辑: 由于在您发布的答案中,没有考虑列的宽度和对齐方式,因此只有一个“,”连接,您可以尝试以下方法:

dico = { 2017 : ['a','b','c','d'], 2018: [1,2,3,4,5,6],2019: [1,2,3,4,5,6],2020: [1,2,3,4,5,6] }

keys=','.join(map(str,dico.keys()))
print(keys)

for v in zip(*dico.values()):  
    print(*v, sep = ",")
输出:

2017 , 2018
a    ,    1
b    ,    2
c    ,    3
d    ,    4
2017,2018,2019,2020
a,1,1,1
b,2,2,2
c,3,3,3
d,4,4,4

我结合了我们所有的解决方案,它需要2.5秒才能在大字典上执行24键*34000个条目,这看起来更像是一种Python式的编写方式:

time1= time.time()
print(','.join(list(dico.keys())))
for v in zip(*dico.values()):
    print(','.join(map(str, v)))

我结合了我们所有的解决方案,它需要2.5秒才能在大字典上执行24键*34000个条目,这看起来更像是一种Python式的编写方式:

time1= time.time()
print(','.join(list(dico.keys())))
for v in zip(*dico.values()):
    print(','.join(map(str, v)))


谢谢你的回答,但事实上我的字典上会有大量的+100键,我不能用手写。我想你可以在打印时循环。我用循环编辑了答案。我也有同样的想法,我不知道是否有更有效的方法,但谢谢你。谢谢你的回答,但事实上我的字典上会有大量的+100键,我无法手工书写。我想你可以边打印边循环。我用循环编辑了答案。我有同样的想法,我不知道是否有更有效的方法,但谢谢你。好主意,它正在工作,但我没有“,”;这是我真正的大字典,24个键,值34000个条目列表->56秒,我的方法是2秒。好主意,它可以工作,但我没有',';这是我真正的大字典,24个键,值34000个条目列表->56秒,而我的方法是2秒。谢谢@MrNobody33,我编辑了我的原始帖子,事实上我有两个以上的键要解包。好吧,你所有的值都是长度1,所有的键都是长度4@Pdeuxa键的值是一个列表。这些列表还有一个未定义的长度,但所有键值的长度仍然相同。我刚刚发布了一个答案,在几行代码中似乎做得很好。实际上,您发布的答案会给您带来错误,因为您必须将键映射到字符串,因为它们是int。我不知道列的宽度不重要,因为您发布的答案只用“,”分隔值,所以,在这种情况下,请看我的答案的最后一次编辑,我认为它可能更像python。谢谢@MrNobody33,我编辑了我的原始帖子,事实上我有两个以上的键要解包。好的,所有值的长度都是1,所有键的长度都是4@Pdeuxa键的值是一个列表。这些列表还有一个未定义的长度,但所有键值的长度仍然相同。我刚刚发布了一个答案,在几行代码中似乎做得很好。实际上,您发布的答案会给您带来错误,因为您必须将键映射到字符串,因为它们是int。我不知道列的宽度不重要,因为您发布的答案只用“,”分隔值,所以,在这种情况下,请看我答案的最后一次编辑,我认为它可能更像蟒蛇。