gpt4 book ai didi

python - 从 Excel 数据循环到每个键有多个值的字典中

转载 作者:行者123 更新时间:2023-12-01 03:52:31 26 4
gpt4 key购买 nike

我对Python相当陌生,我认为这个问题相当简单,但我无法弄清楚......

我有一个 Excel 数据表,其中有 B 列字符串和 C 到 I 列作为值。我想创建一个字典,其中每个键值B 列,我分配了 C 到 I 列的值。我想出了如何每行执行一次,一次一个,但我正在寻找一种 for 循环语法来执行此操作贯穿整个 Excel 数据表。

这是我的代码:

NYSE = {}
NYSE.setdefault(sheet['B5'].value, []).append(sheet['C5'].value)
NYSE.setdefault(sheet['B5'].value, []).append(sheet['D5'].value)
NYSE.setdefault(sheet['B6'].value, []).append(sheet['C6'].value)
NYSE.setdefault(sheet['B6'].value, []).append(sheet['D6'].value)
print NYSE

我可以继续手动添加...B7 C7、B7 D7等,但必须有一种方法可以在函数中循环它并输出字典。

最佳答案

你可以尝试这样的事情:

from collections import defaultdict

d = defaultdict(list)
for line in open("pyex.csv").readlines():
line = line.strip()
line = line.split(",")
key, value = line[0], line[1:]
d[key] += value
print(d)

如果您有一个如下所示的 csv 文件。其中第一列是字符串,第二列和之后的每一列都是值:

crow    19    13
bird 16 32

此代码将输出:

defaultdict(<class 'list'>, {'crow ': ['19', '13'], 'bird': ['16', '32']})

[0.1秒完成]

这允许您为每个键拥有多个值,因为这些值包含在列表中。

更新:

使用 setdefault 代替:

d = {}
for line in open("pyex.csv").readlines():
line = line.strip()
line = line.split(",")
key = line[0]
for value in line[1:]:
d.setdefault(key, []).append(value)
print(d)

输出:

{'crow': ['19', '13'], 'bird': ['16', '32']}

或者甚至使用 csv 库

import csv

csv_file = open("pyex.csv")
csv_reader = csv.reader(csv_file)

d = {}
for line in csv_reader:
key = line[0]
for value in line[1:]:
d.setdefault(key, []).append(value)
print(d)

正如@martineu所说,你不需要defaultdicts或setdefaults:

import csv

csv_file = open("Book1.csv")
csv_reader = csv.reader(csv_file)

d = {}
for line in csv_reader:
key = line[0]
d[key] = line[1:]
print(d)

关于python - 从 Excel 数据循环到每个键有多个值的字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38016017/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com