首页 > 解决方案 > 从列表创建密钥对并附加到列表列表

问题描述

我正在尝试从列表中创建密钥对,然后将它们附加到列表列表中。但是它返回一个空列表。

  Combined = {}
  Awarded = []

  Keys = Contract_Keys + Details_Keys
  Values = Contract_Values + Details_Values
  #Create key pairs with multiple lists
  Combined = dict(zip(Keys, Values))

  #Append to the Awarded table
  Awarded.append(Combined)

  Final = pd.DataFrame(Awarded)

注意:我已将代码更改为上述代码,以便我实际上可以返回一个非空集。但是,我现在遇到的问题是,当我压缩和 dict 键和值时,结果很奇怪:

Combined = dict(zip([a, b], [1,2])) 当它应该是 [a:1, b:2] 时被返回为 [a1:1, b2:2)。为什么 Value 会与 Key 字段中的 Key 连接?

标签: pythonlistkey-pair

解决方案


不确定这是否是您之后的目标,但我能够通过列表推导来做到这一点?

Combined = {}
Awarded = []

#Created some test dictionaries
dictOne = {"k1" : "v1","k2" : "v2","k3" : "v3","k4" : "v4" }
dictTwo = {"k5" : "v5","k6" : "v6","k7" : "v7","k8" : "v8" }

#Got the keys
Contract_Keys = [keys for keys in dictOne]
Details_Keys = [keys for keys in dictTwo]

#Got the values
Contract_Values = [dictOne[values] for values in dictOne]
Details_Values = [dictTwo[values] for values in dictTwo]

########output###########
#['k1', 'k2', 'k3', 'k4'] 
#['k5', 'k6', 'k7', 'k8'] 

#['v1', 'v2', 'v3', 'v4'] 
#['v5', 'v6', 'v7', 'v8'] 

#Concat lists
Keys = Contract_Keys + Details_Keys
Values = Contract_Values + Details_Values

#Combined lists into single dictionary
Combined = dict(zip(Keys, Values))

#Combined kvp from dict into a list of lists
Awarded = [[key, Combined[key]] for key in Combined]

#########output#########
#[['k1', 'v1'], ['k2', 'v2'], ['k3', 'v3'], ['k4', 'v4'], ['k5', 'v5'], 
#['k6', 'v6'], ['k7', 'v7'], ['k8', 'v8']]

#{'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'k4': 'v4', 'k5': 'v5', 'k6': 'v6', 
#'k7': 'v7', 'k8': 'v8'}

推荐阅读