将字典元素组合到列表中

2024-04-25 22:30:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两本字典,内容如下:

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]]

基本上,单个列表不必重复两次字母,只需添加第二个数字。非常感谢您的帮助。你知道吗


Tags: 代码l1内容列表字典nl字母数字
3条回答

您可以使用list comprehension将项目放入列表中。另外,对dict使用get()方法,这样,如果另一个dict中不存在键,它就不会抛出键错误

>>> [(key, val, dct1.get(key)) for key, val in dct2.items()]
[('NL', 2, 7), ('PG', 6, None), ('MC', 10, 9)]

因为两个字典中的键相同:

>>> 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]

列表理解应该:

lst =  [[k, v, dct2[k]] for k, v in dct1.items()]
print lst
# [['NL', 7, 2], ['PG', 8, 6], ['MC', 9, 10]]

请注意,子列表的顺序可能会有所不同,因为字典没有顺序。你知道吗

相关问题 更多 >