![](/img/trans.png)
[英]how to create a list of values from one key-value pair based on the value of another k-v pair from a list of dictionaries with two key-value pairs
[英]How to create key-value pair list from two list of ndarray in python?
我正在嘗試從我的數據中的 2 ndarray 制作鍵值對。 為此,我嘗試遍歷 ndarray 的每個列表,嘗試將它們放在一起,但這對我來說不太奏效。 任何人都可以建議這樣做的可能方法嗎? 任何的想法?
數據和我的嘗試
這是我需要從中制作字典的第一個 ndarray 列表:
['267']
['354' '783']
['21488']
['6063A']
['86R']
['969']
['332']
['630']
['788']
['8']
['27']
['278']
['262' '86K']
這是 ndarray 的第二個列表:
['JBS']
['Cargill' 'Harris Ranch']
['One World']
['Central Valley']
['Cargill']
['JBS']
['FPL']
['CS Beef']
['Aurora Pack']
['National Beef']
['Creekstone']
['Tyson']
['National Beef' 'Cargill']
我的嘗試:
這是我的嘗試:
import numpy as np
for (i,j), value in np.ndenumerate(first_ndarray):
for(m,n), value_2 in np.ndenumerate(first_ndarray):
dict= to_dict(value, value_2)
但這對我不起作用,看起來迭代 ndarray 的方式可能是正確的,但不會發生鍵值對。 誰能指出我如何做到這一點? 有什么想法嗎?
期望的輸出
這是我想要的輸出:
['JBS': '267']
['Cargill': '354' , 'Harris Ranch': '783']
['One World': 21488']
['Central Valley':'6063A']
['Cargill':'86R']
['JBS':'969']
['FPL':'332']
['CS Beef':'630']
['Aurora Pack':'788']
['National Beef':'8']
['Creekstone':'27']
['Tyson':'278']
['National Beef':'262', 'Cargill':'86K']
我怎樣才能得到我想要的輸出? 任何的想法? 謝謝!
您首先必須展平列表,然后可以使用zip()
制作元組 (k, v) 列表,然后將它們轉換為字典。
a = [
['A'],
['B'],
['C','D']
]
b = [
[1],
[2],
[3,4]
]
flatten = lambda l: [item for sublist in l for item in sublist]
d = dict(zip(flatten(a), flatten(b)))
print(d)
{'A': 1, 'B': 2, 'C': 3, 'D': 4}
請注意,如果a
和b
是 numpy 數組,則可以直接使用flatten 方法/函數。 它可能比 lambda 函數快得多。
first_ndarray = [['267'],
['354', '783'],
['21488' ],
['6063A' ],
['86R' ],
['969' ],
['332'],
['630' ],
['788' ],
['8' ],
['27'],
['278'],
['262' ,'86K']]
second_ndarray = [['JBS'],
['Cargill' ,'Harris Ranch'],
['One World'],
['Central Valley'],
['Cargill'],
['JBS'],
['FPL'],
['CS Beef'],
['Aurora Pack'],
['National Beef'],
['Creekstone'],
['Tyson'],
['National Beef', 'Cargill']]
res={}
for i in range(len(first_ndarray)):
values = first_ndarray[i]
keys=second_ndarray[i]
dictionary = dict(zip(keys, values))
res.update(dictionary)
print(res)
輸出:
{'Aurora Pack': '788',
'CS Beef': '630',
'Cargill': '86K',
'Central Valley': '6063A',
'Creekstone': '27',
'FPL': '332',
'Harris Ranch': '783',
'JBS': '969',
'National Beef': '262',
'One World': '21488',
'Tyson': '278'}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.