簡體   English   中英

將字典元素合並到列表列表中

[英]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()方法,以便如果另一個dict中不存在鍵,則它不會引發鍵錯誤。

>>> [(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])

要么

簡短而甜美的使用列表理解:

L3 =  [[key, value, dct2[key]] for key, value in dct1.iteritems()]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM