[英]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.