将列表为值的python字典导出到cs

2024-06-17 07:58:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个列表,并将这两个列表合并到一本词典中:

ip = ["1.1.1.1", "2.2.2.2", "3.3.3.3", " 4.4.4.4", "5.5.5.5", "6.6.6.6", "7.7.7.7"]
name = ["ip0", "ip2", "ip2", "ip3", "ip3", "ip3"]

{'ip2': "['2.2.2.2', '3.3.3.3']", 'ip3': "[' 4.4.4.4', '5.5.5.5', '6.6.6.6']", 'ip0': "['1.1.1.1']"}

我想将此词典导出到CSV文件 键在一个单元格中,成对的值也应该在下一个单元格中,并且这个单元格中应该有多行ip地址。 示例:

ip2 2.2.2.2
    3.3.3.3

我该怎么做?你知道吗

合并两个列表配置:

k = list(zip(name, ip))
d = {}
for (x,y) in k:
    if x in d:
        d[x] = d[x] +","+ y 
    else:
        d[x] = y

Tags: 文件csvnameinip示例列表for
1条回答
网友
1楼 · 发布于 2024-06-17 07:58:53

现在我明白你的意思了。以下是更新答案的示例:

ip = ["1.1.1.1", "2.2.2.2", "3.3.3.3", "4.4.4.4", "5.5.5.5", "6.6.6.6", "7.7.7.7"]
name = ["ip0", "ip2", "ip2", "ip3", "ip3", "ip3"]

# Create dictionary
# We use setdefault to list ([]) here to be able to append values to list
# if it does not exist yet.
#d = {}
#for x,y in list(zip(name,ip)):
#    d.setdefault(x, []).append(y)


# But to use your example we can use this small modification:
k = list(zip(name, ip))
d = {}
# Create dictionary
for (x,y) in k:
    if x in d:
        d[x] += [y]
    else:
        d[x] = [y]

# Output dictionary
with open("output.csv", "w") as f:
    for k,v in d.iteritems(): # d.items() if py3
        for ind,item in enumerate(v):
            if ind == 0:
                f.write("{},{}\n".format(k,item))
            else:
                f.write(",{}\n".format(item))

““输出.csv“:”

ip0,1.1.1.1
ip2,2.2.2.2
,3.3.3.3
ip3,4.4.4.4
,5.5.5.5
,6.6.6.6

字典现在如下所示:

 {'ip0': ['1.1.1.1'],
 'ip2': ['2.2.2.2', '3.3.3.3'],
 'ip3': ['4.4.4.4', '5.5.5.5', '6.6.6.6']}

相关问题 更多 >