我目前面临一个问题,使我的简历数据进入字典。你知道吗
我想在文件中使用3列:
userID, placeID, rating
U1000, 12222, 3
U1000, 13333, 2
U1001, 13333, 4
我想让结果看起来像这样:
{'U1000': {'12222': 3, '13333': 2},
'U1001': {'13333': 4}}
也就是说, 我想让我的数据结构看起来像:
sample = {}
sample["U1000"] = {}
sample["U1001"] = {}
sample["U1000"]["12222"] = 3
sample["U1000"]["13333"] = 2
sample["U1001"]["13333"] = 4
但我有很多数据要处理。 我想用loop得到结果,但我试了两个小时,都失败了。。你知道吗
---以下代码可能会使您感到困惑---
我的结果如下:
{'U1000': ['12222', 3],
'U1001': ['13333', 4]}
我想我的代码有很多错误。。如果您不介意,请看一下:
reader = np.array(pd.read_csv("rating_final.csv"))
included_cols = [0, 1, 2]
sample= {}
target=[]
target1 =[]
for row in reader:
content = list(row[i] for i in included_cols)
target.append(content[0])
target1.append(content[1:3])
sample = dict(zip(target, target1))
如何改进代码? 我查过了,但由于个人能力不足, 谁能帮我一下吗?你知道吗
非常感谢!!你知道吗
这应该是你想要的:
^{} 是一个方便实用程序,每当您试图访问字典中不存在的键时,它都会提供默认值。如果您不喜欢它(例如,因为您希望
sample['non-existent-user-id]
因KeyError
而失败),请使用以下命令:示例中的预期输出是不可能的,因为
{'1333': 2}
不会与键相关联。不过,如果使用dict
个dict
,您可以得到{'U1000': {'12222': 3, '1333': 2}, 'U1001': {'13333': 4}}
:或者,使用^{} 来避免需要^{} (或者涉及
try
/except KeyError
或if userID in sample:
的替代方法,这些方法牺牲了setdefault
的原子性,以换取不必要地创建空的dict
):转换回普通的
dict
可以确保将来的查找不会自动激活键,将KeyError
提升为正常状态,如果您print
它看起来像正常的dict
。你知道吗如果
included_cols
很重要(因为名称或列索引可能会更改),您可以使用operator.itemgetter
来加快并简化一次提取所有所需列的过程:相关问题 更多 >
编程相关推荐