Python 如何将具有列表值的字典转换为表
我有一本字典:Python 如何将具有列表值的字典转换为表,python,json,list,dictionary,Python,Json,List,Dictionary,我有一本字典: {"A": [1,2,3], "B": [5,7,9], "C":[12,5,6]} 我希望表格的格式如下: A | 1 A | 2 A | 3 B | 5 B | 7 . | . . | . C | 6 也许您需要数据表示。可能有不同的好方法来解决这个问题 这个 下面是一个简单的python代码,看看它是否适合您的需要 def dict_list_value_to_table(dict_with_list): """
{"A": [1,2,3], "B": [5,7,9], "C":[12,5,6]}
我希望表格的格式如下:
A | 1
A | 2
A | 3
B | 5
B | 7
. | .
. | .
C | 6
也许您需要数据表示。可能有不同的好方法来解决这个问题 这个 下面是一个简单的python代码,看看它是否适合您的需要
def dict_list_value_to_table(dict_with_list):
"""
Function coverts a dictionary of list as it's
values to table format.
>>> {"A": [1,2,3], "B": [5,7,9], "C":[12,5,6]}
A | 1
A | 2
A | 3
B | 5
B | 7
B | 9
C | 12
C | 5
C | 6
"""
# Sorts the records orderly.
for key in sorted(dict_with_list):
for values in dict_with_list.get(key):
print key, " | ", values
# Commented below does not sort.
# But does the same.
#for key, value in dict_with_list.items():
# for v in value:
# print key, "|",v
#
return
if __name__=="__main__":
arg = {"A": [1,2,3], "B": [5,7,9], "C":[12,5,6]}
dict_list_value_to_table(arg)
如果你想要一些先进的东西,那么,正如在评论中所建议的那样
numpy或pandas和其他高级python数据结构。如果您希望元素的添加顺序准确,请使用OrderedDict
d = {"A": [1,2,3], "B": [5,7,9], "C":[12,5,6]}
# make dictionary to list
l = []
for key, value in d.iteritems():
temp = (key, value)
l.append(temp)
# sort list
l = sorted(l, key = lambda x: x[0])
# finally!
for key, lists in l:
for item in lists:
print( "{}|{}".format(key, item) )
# tested in python2.7, 3.5
from collections import OrderedDict
data = {"A": [1,2,3], "B": [5,7,9], "C": [12,5,6]}
# expecting alpha order "A"
sorted_data = OrderedDict(sorted(data.items(), key=lambda t: ord(t[0])))
for key, value in sorted_data.items():
for le in value:
print("{}|{}".format(key, le))
输出:
A | 1
A | 2
A | 3
B | 5
B | 7
B | 9
C | 5
C | 6
C | 12
当你说table是什么意思?table和table一样,我在这里找不到如何表示它,但是我模糊地画了它,但基本上每一行都应该有键和列表中的一个值,然后是下一行键和列表中的一个值,依此类推。它不需要有标题。python中没有表。这是一个根本不存在的数据结构。您可以使用numpy或pandas分别构造矩阵或数据帧,但即使是这些也只是嵌套列表。你想用它做什么?是的,我指的是数据帧或一个漂亮的表格或类似的东西。。但是我想知道是否有一种方法可以满足我的要求……你是想把结果以那种格式打印出来,还是把它存储在某个地方?另外,第一个字典中的顺序对结果重要吗?请说明这是python 2。此代码不在python3中运行。iteritems方法已重命名为仅项目Dictionary将没有精确的顺序
A | 1
A | 2
A | 3
B | 5
B | 7
B | 9
C | 5
C | 6
C | 12