我想在下面换一本字典。。。
dict = {
'A': [('B', 1), ('C', 3), ('D', 7)],
'B': [('D', 5)],
'C': [('D', 12)] }
变成类似于这样另一种形式:
dict = [
('A', 'B', 1), ('A', 'C', 3), ('A', 'D', 7),
('B', 'C', 12), ('C', 'D', 12)]
谢谢
Python元组是一个不可变的对象。 因此,任何试图修改它的操作(如append)都是不允许的。 但是,可以使用以下变通方法。
dict = {
'A': [('B', 1), ('C', 3), ('D', 7)],
'B': [('D', 5)],
'C': [('D', 12)] }
new_dict = []
for key, tuple_list in dict.items():
for tuple_item in tuple_list:
entry = list(tuple_item)
entry.append(key)
new_dict.append(tuple(entry))
print(new_dict)
输出:[('B',1,'A'),('C',3,'A'),('D',7,'A'),('D',5,'B'),('D',12,'C')]
您可以使用.items()
迭代字典。 请注意,每个值本身就是一个元组列表。 我们想要解包每个元组,因此需要一个嵌套的for-loop,如下所示。 res
是我们将在循环中填充的输出列表。
res = []
for key, values in dict.items():
for value in values:
res.append((key, value[0], value[1]))
示例输出:
>>> res
[('A', 'B', 1), ('A', 'C', 3), ('A', 'D', 7), ('B', 'D', 5), ('C', 'D', 12)]
一个简单的方法可以是
new_dict = []
for letter1, list in dict.items():
for letter2, value in list:
new_dict.append([letter1, letter2, value])