[英]List of lists of dictionaries to list of lists of tuples
一開始我有一個字典的字典:
{'count': {'-5': {'R': 279, 'K': 336, 'D': 171, 'E': 246, 'N': 239, 'Q': 371, 'S': 894, 'G': 520, 'H': 122, 'T': 647, 'A': 643, 'P': 712, 'Y': 126, 'V': 444, 'M': 106, 'C': 74, 'L': 473, 'F': 202, 'I': 239, 'W': 35, '!': 15}, '-4': {'R': 270, 'K': 361, 'D': 177, 'E': 265, 'N': 208, 'Q': 361, 'S': 891, 'G': 455, 'H': 131, 'T': 700, 'A': 653, 'P': 699, 'Y': 128, 'V': 455, 'M': 114, 'C': 37, 'L': 495, 'F': 215, 'I': 235, 'W': 34, '!': 10} } }
使用列表理解:
dictionary_count = [value for value in dictionary_count.values()]
dictionary_count = [list(col) for col in zip(*[d.values() for d in dictionary_count])]
我有:
[[{'R': 279, 'K': 336, 'D': 171, 'E': 246, 'N': 239, 'Q': 371, 'S': 894, 'G': 520, 'H': 122, 'T': 647, 'A': 643, 'P': 712, 'Y': 126, 'V': 444, 'M': 106, 'C': 74, 'L': 473, 'F': 202, 'I': 239, 'W': 35, '!': 15}, '-4': {'R': 270, 'K': 361, 'D': 177, 'E': 265, 'N': 208, 'Q': 361, 'S': 891, 'G': 455, 'H': 131, 'T': 700, 'A': 653, 'P': 699, 'Y': 128, 'V': 455, 'M': 114, 'C': 37, 'L': 495, 'F': 215, 'I': 235, 'W': 34, '!': 10}]]
但現在我被困住了,我想:
[[('R', 279),('K', 336),('D', 171),('E', 246),('N', 239),('Q', 371),('S', 894),('G', 520),('H', 122),('T', 647),('A', 643),('P', 712),('Y', 126),('V', 444),('M', 106),('C', 74),('L', 473),('F', 202),('I', 239),('W', 35),('!', 15})],[('R', 270),('K', 361),('D', 177),('E', 265),('N', 208),('Q', 361),('S', 891),('G', 455),('H', 131),('T', 700),('A', 653),('P', 699),('Y', 128),('V', 455),('M', 114),('C', 37),('L', 495),('F', 215),('I', 235),('W', 34),('!', 10}]]
我為您提供了如下解決方案。
a = {'count': {'-5': {'R': 279, 'K': 336}}}
result = [[list(col.items()) for col in val.values()] for val in a.values()]
>>> [[[('R', 279), ('K', 336)]]]
由於您的輸入是 3 層字典,因此具有列表理解的 output 應該是像[[[('R', 279)]]]
這樣的 3 維。 如果您想要像[[('R', 279)]]
一樣的 2-dims output ,我建議使用嵌套循環,這樣您可以更自由地自定義 output,如下所示。
result = []
for key, val in a.items():
# val = {'-5': {'R': 279, 'K': 336}}
temp = []
for aKey, aVal in val.items():
# aVal = {'R': 279, 'K': 336}
for item in aVal.items():
temp.append(tuple(item))
result.append(temp)
print(result)
>>> [[('R', 279),('K', 336)]]
我給你兩種方式——傳統的和pythonic的,這樣你就可以理解解決方案:
代碼:
dictionary_count = {'count': {'-5': {'R': 279, 'K': 336, 'D': 171, 'E': 246, 'N': 239, 'Q': 371, 'S': 894, 'G': 520, 'H': 122, 'T': 647, 'A': 643, 'P': 712, 'Y': 126, 'V': 444, 'M': 106, 'C': 74, 'L': 473, 'F': 202, 'I': 239, 'W': 35, '!': 15}, '-4': {'R': 270, 'K': 361, 'D': 177, 'E': 265, 'N': 208, 'Q': 361, 'S': 891, 'G': 455, 'H': 131, 'T': 700, 'A': 653, 'P': 699, 'Y': 128, 'V': 455, 'M': 114, 'C': 37, 'L': 495, 'F': 215, 'I': 235, 'W': 34, '!': 10} } }
# desired : [[('R', 279),('K', 336),('D', 171),('E', 246),('N', 239),('Q', 371),('S', 894),('G', 520),('H', 122),('T', 647),('A', 643),('P', 712),('Y', 126),('V', 444),('M', 106),('C', 74),('L', 473),('F', 202),('I', 239),('W', 35),('!', 15})],[('R', 270),('K', 361),('D', 177),('E', 265),('N', 208),('Q', 361),('S', 891),('G', 455),('H', 131),('T', 700),('A', 653),('P', 699),('Y', 128),('V', 455),('M', 114),('C', 37),('L', 495),('F', 215),('I', 235),('W', 34),('!', 10}]]
# standard way -- convert it to pythonic later
res_lst = []
for k, v in dictionary_count.items():
for k1, v1 in v.items():
lst = []
for k2, v2 in v1.items():
lst.append((k2,v2))
res_lst.append(lst)
print(res_lst, '\n')
py_list = [[[((k2,v2)) for k2, v2 in v1.items()]for k1, v1 in v.items()] for k, v in dictionary_count.items()]
you_need = py_list[0]
print(you_need)
Output:
[[('R', 279), ('K', 336), ('D', 171), ('E', 246), ('N', 239), ('Q', 371), ('S', 894), ('G', 520), ('H', 122), ('T', 647), ('A', 643), ('P', 712), ('Y', 126), ('V', 444), ('M', 106), ('C', 74), ('L', 473), ('F', 202), ('I', 239), ('W', 35), ('!', 15)], [('R', 270), ('K', 361), ('D', 177), ('E', 265), ('N', 208), ('Q', 361), ('S', 891), ('G', 455), ('H', 131), ('T', 700), ('A', 653), ('P', 699), ('Y', 128), ('V', 455), ('M', 114), ('C', 37), ('L', 495), ('F', 215), ('I', 235), ('W', 34), ('!', 10)]]
[[('R', 279), ('K', 336), ('D', 171), ('E', 246), ('N', 239), ('Q', 371), ('S', 894), ('G', 520), ('H', 122), ('T', 647), ('A', 643), ('P', 712), ('Y', 126), ('V', 444), ('M', 106), ('C', 74), ('L', 473), ('F', 202), ('I', 239), ('W', 35), ('!', 15)], [('R', 270), ('K', 361), ('D', 177), ('E', 265), ('N', 208), ('Q', 361), ('S', 891), ('G', 455), ('H', 131), ('T', 700), ('A', 653), ('P', 699), ('Y', 128), ('V', 455), ('M', 114), ('C', 37), ('L', 495), ('F', 215), ('I', 235), ('W', 34), ('!', 10)]]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.