python - 从列表创建密钥对并附加到列表列表
问题描述
我正在尝试从列表中创建密钥对,然后将它们附加到列表列表中。但是它返回一个空列表。
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 连接?
解决方案
不确定这是否是您之后的目标,但我能够通过列表推导来做到这一点?
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'}
推荐阅读
- javascript - SailsJS / Waterline ORM:仅使用一个查询更新多个条目
- django - 如何从 websocket 请求中找到用户?
- laravel - Laravel 查询构建器 - 使用行中的数据与另一个中的时间进行比较
- spring-boot - 原因:io.lettuce.core.RedisCommandExecutionException: ERR denied to admin command
- sql - 如何在 SELECT 查询中将数组的第一个元素附加到自身
- python - 如果匹配,Sphinx 会忽略结果中的 ID
- ios - 自 iOS 12.2 更新以来,应用程序崩溃且没有崩溃报告
- swift - 我无法解析推送通知中的数据
- ios - IOS Swift,条形图中条形值的自定义渲染器
- arrays - Ruby:如何将唯一值附加到重复项?例如(值,值_2,值_3)