将字典元素组合成列表列表
Combining dictionary elements into a list of list
我有两本字典,内容为:
dct1 = {'NL': 7,'MC': 9, 'PG': 8}
dct2 = {'NL': 2,'MC': 10,'PG': 6}
你可以说这些代表游戏的分数,其中字母是名字,数字是分数。两本词典的区别在于它们根据标准计算的数字。
现在我想将字典中的内容组合成一个列表列表。我将提供我的代码的粗略概念。基本上我所做的就是将两个词典中的内容变成一个列表列表,其中:
L1 = [['NL',7],['MC',9],['PG',8]]
L2 = [['NL',2],['MC',10],['PG',6]]
将它们转成列表列表的代码:
L1 = []
for i, occurrences in dct1.items():
L1.append([i,occurrences])
L2 = []
for j, occurrences in dct2.items():
L2.append([j,occurrences])
一旦我打印了这两个列表,我就得到了我上面写的。
但是现在,我不想有两个不同的列表,而是想将它们组合成一个列表,我的输出是:
L3 = [['NL',7,2],['MC',9,10],['PG',8,6]]
基本上单个列表不必重复字母两次,只需添加第二个数字即可。非常感谢任何帮助。
列表理解应该做到:
lst = [[k, v, dct2[k]] for k, v in dct1.items()]
print lst
# [['NL', 7, 2], ['PG', 8, 6], ['MC', 9, 10]]
请注意,子列表的排序可能会有所不同,因为字典没有排序。
因为两个字典中的关键字相同:
>>> dct1 = {'NL': 7,'MC': 9, 'PG': 8}
>>> dct2 = {'NL': 2,'MC': 10,'PG': 6}
>>> L3 = []
>>> for key in dct1:
... L3.append([key, dct1[key], dct2[key]])
...
>>> L3
[['NL', 7, 2], ['PG', 8, 6], ['MC', 9, 10]
您可以使用 list comprehension
将项目放入列表中。另外,在 dict
上使用 get() 方法,这样如果另一个字典中不存在键,它就不会抛出键错误。
>>> [(key, val, dct1.get(key)) for key, val in dct2.items()]
[('NL', 2, 7), ('PG', 6, None), ('MC', 10, 9)]
Assuming you are using python 2.7.x
求理解
L3 = []
for key, value in dct1.iteritems():
L3.append([key, value, dct2[key])
或
使用 List comprehension 的短小精悍:
L3 = [[key, value, dct2[key]] for key, value in dct1.iteritems()]
我有两本字典,内容为:
dct1 = {'NL': 7,'MC': 9, 'PG': 8}
dct2 = {'NL': 2,'MC': 10,'PG': 6}
你可以说这些代表游戏的分数,其中字母是名字,数字是分数。两本词典的区别在于它们根据标准计算的数字。
现在我想将字典中的内容组合成一个列表列表。我将提供我的代码的粗略概念。基本上我所做的就是将两个词典中的内容变成一个列表列表,其中:
L1 = [['NL',7],['MC',9],['PG',8]]
L2 = [['NL',2],['MC',10],['PG',6]]
将它们转成列表列表的代码:
L1 = []
for i, occurrences in dct1.items():
L1.append([i,occurrences])
L2 = []
for j, occurrences in dct2.items():
L2.append([j,occurrences])
一旦我打印了这两个列表,我就得到了我上面写的。
但是现在,我不想有两个不同的列表,而是想将它们组合成一个列表,我的输出是:
L3 = [['NL',7,2],['MC',9,10],['PG',8,6]]
基本上单个列表不必重复字母两次,只需添加第二个数字即可。非常感谢任何帮助。
列表理解应该做到:
lst = [[k, v, dct2[k]] for k, v in dct1.items()]
print lst
# [['NL', 7, 2], ['PG', 8, 6], ['MC', 9, 10]]
请注意,子列表的排序可能会有所不同,因为字典没有排序。
因为两个字典中的关键字相同:
>>> dct1 = {'NL': 7,'MC': 9, 'PG': 8}
>>> dct2 = {'NL': 2,'MC': 10,'PG': 6}
>>> L3 = []
>>> for key in dct1:
... L3.append([key, dct1[key], dct2[key]])
...
>>> L3
[['NL', 7, 2], ['PG', 8, 6], ['MC', 9, 10]
您可以使用 list comprehension
将项目放入列表中。另外,在 dict
上使用 get() 方法,这样如果另一个字典中不存在键,它就不会抛出键错误。
>>> [(key, val, dct1.get(key)) for key, val in dct2.items()]
[('NL', 2, 7), ('PG', 6, None), ('MC', 10, 9)]
Assuming you are using python 2.7.x
求理解
L3 = []
for key, value in dct1.iteritems():
L3.append([key, value, dct2[key])
或
使用 List comprehension 的短小精悍:
L3 = [[key, value, dct2[key]] for key, value in dct1.iteritems()]