纯Python列表字典
我有一本字典,其结构如下:未确定键数: dico={2017:[a,b,c,d…],2018:[1,2,3,4,5,6…] 我想要的输出如下:纯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',
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。我不知道列的宽度不重要,因为您发布的答案只用“,”分隔值,所以,在这种情况下,请看我答案的最后一次编辑,我认为它可能更像蟒蛇。