[英]how to arrange list of lists of dictionaries as a table with key name as header in python
[英]Python convert 3 lists to list of dictionaries with list name as key name
我有 3 个列表,我想将它们转换为字典列表。 所需的输出是将列表名称作为每个字典中的键。
# 3 lists
source_ip_address = ["172.30.1.1","123.123.1.1","180.104.1.1"]
destination_ip_address = ["172.31.1.1","172.31.1.1","192.168.1.1"]
incident_name = ["Credential Sharing","Remote IP","OTP Failures"]
# desired output
[
{
'source_ip_address': '172.30.1.1',
'destination_ip_address': '172.31.1.1',
'incident_name': 'Credential Sharing'
},
{
'source_ip_address': '123.123.1.1',
'destination_ip_address': '172.31.1.1',
'incident_name': 'Remote IP'
},
{
'source_ip_address': '180.104.1.1',
'destination_ip_address': '192.168.1.1',
'incident_name': 'OTP Failures'
}
]
是这样还是您正在寻找某种自动化来提取变量的别名?
source_ip_address = ["172.30.1.1","123.123.1.1","180.104.1.1"]
destination_ip_address = ["172.31.1.1","172.31.1.1","192.168.1.1"]
incident_name = ["Credential Sharing","Remote IP","OTP Failures"]
print([{'source_ip_address':x, 'destination_ip_address':y, 'incident_name':z} for x,y,z in zip(source_ip_address, destination_ip_address, incident_name)])
有很多不同的方法可以做到这一点,但这是我要做的。
result = [{'source_ip_address': source,
'destination_ip_address': dest,
'incident_name': incident}
for source, dest, incident in zip(source_ip_address,
destination_ip_address,
incident_name)]
你可以做任何你想要的间距,当然,这只是我首先想到的。 所以我会很快解释它的意思。 因此 zip 基本上只是获取每个列表并将它们转换为元素元组的可迭代对象。 这意味着第一个元素是('172.30.1.1','172.31.1.1','Credential Sharing')
。 for 循环遍历所有元素并将它们分解为单独的位。 因此,在第一次迭代中, source='172.30.1.1'
、 dest='172.31.1.1'
和dest='172.31.1.1'
incident='Credential Sharing'
。 我认为很清楚字典是如何从一次迭代中构建的。 for 位于列表推导式中,因此它遍历所有元素并生成包含每个字典的列表。
您可以使用 zip 进行列表理解或简单的 for 循环。
source_ip_address = ["172.30.1.1","123.123.1.1","180.104.1.1"]
destination_ip_address = ["172.31.1.1","172.31.1.1","192.168.1.1"]
incident_name = ["Credential Sharing","Remote IP","OTP Failures"]
ip_list = []
for a,b,c in zip(source_ip_address,destination_ip_address,incident_name):
ip_list.append({'source_ip_address':a,
'destination_ip_address': b,
'incident_name': c})
print (ip_list)
输出将是:
[{'source_ip_address': '172.30.1.1', 'destination_ip_address': '172.31.1.1', 'incident_name': 'Credential Sharing'}, {'source_ip_address': '123.123.1.1', 'destination_ip_address': '172.31.1.1', 'incident_name': 'Remote IP'}, {'source_ip_address': '180.104.1.1', 'destination_ip_address': '192.168.1.1', 'incident_name': 'OTP Failures'}]
以防万一您不熟悉 zip 并希望使用常规迭代,您也可以执行类似的操作。
n = len(source_ip_address)
ip_list = []
for i in range(n):
ip_list.append({'source_ip_address':source_ip_address[i],
'destination_ip_address': destination_ip_address[i],
'incident_name': incident_name[i]})
print (ip_list)
这个的输出也将是相同的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.