Python 获取列表、比较值、创建具有多个键的字典

Python 获取列表、比较值、创建具有多个键的字典,python,list,dictionary,Python,List,Dictionary,我正在尝试获取一个包含IP地址和端口号的列表,并以这种格式打印数据127.0.0.1:21,80443。下面是一个虚拟数据示例 127.0.0.1 80 127.0.0.1 443 192.168.1.1 21 192.168.1.2 22 192.168.1.2 3389 192.168.1.2 5900 我希望这个数据输出如上所述。现在,我有一个列表中的数据,我希望将端口与IP地址关联起来,这样就不会对每个端口重复IP地址。该数据应输出至: 127.0.0.1:80,443 192.168

我正在尝试获取一个包含IP地址和端口号的列表,并以这种格式打印数据
127.0.0.1:21,80443
。下面是一个虚拟数据示例

127.0.0.1
80
127.0.0.1
443
192.168.1.1
21
192.168.1.2
22
192.168.1.2
3389
192.168.1.2
5900
我希望这个数据输出如上所述。现在,我有一个列表中的数据,我希望将端口与IP地址关联起来,这样就不会对每个端口重复IP地址。该数据应输出至:

127.0.0.1:80,443
192.168.1.1:21
192.168.1.2:22,3389,5900

您可以使用“格式”-而不只是打印列表中的每个元素,请执行以下操作:

print "{0} : {1}".format(list[0], list[1])
但是,您尚未指定输入是什么。下次您应该添加它。

使用a可以收集每个地址的端口,然后一次打印出来,如下所示:

from collections import defaultdict
address_to_ports = defaultdict(list)
with open('file1') as f:
    for address in f:
        address_to_ports[address.strip()].append(next(f).strip())

print(address_to_ports)

print(['{}:{}'.format(a, ','.join(p)) for a, p in address_to_ports.items()])
结果:
defaultdict(,{'127.0.0.1':['80','443','192.168.1.1':['21','192.168.1.2':['22','3389','5900']))
['127.0.0.1:80,443', '192.168.1.1:21', '192.168.1.2:22,3389,5900']

让我们假设您的列表位于名为“ip_list.txt”的文件中 代码

输出:

{'192.168.1.1': ['21'], '127.0.0.1': ['80', '443']}

“我有列表中的数据”您发布的示例数据看起来不像列表。那么数据是如何格式化的呢?你能告诉我们输入列表是什么样子的吗?你为这个问题做了什么尝试,你被困在哪里了?显示一些尝试的代码。ip地址是否已排序?此外,您使用了dictionary标记。您是否碰巧尝试将数据从列表转换为字典?
f = open("ip_list.txt","r")
count = 2
dict_of_ip = {}
ip = ''
for i in f:
    if count%2 == 0:
        if i.strip() not in dict_of_ip.keys():
            ip = i.strip()
            dict_of_ip[ip] = []
    else:
        dict_of_ip[ip].append(i.strip())
    count = count + 1
print(dict_of_ip)
{'192.168.1.1': ['21'], '127.0.0.1': ['80', '443']}