繁体   English   中英

Python:使用整数和字符串作为键将嵌套列表转换为字典

[英]Python: converting a nested list into a dictionary using as key an integer and a string

我的代码需要帮助。

我有一个这样的嵌套列表:

numbers = [[4, 1, 1, 2, 3, 2], [2, 7, 3, 2, 7, 4], [1, 7, 4, 3, 3, 2]]

我也有一个字符串列表:

F = ["M", "O", "R", "V", "C", "P"]

我想在字典中转换列表频率。 我的代码是这样的:

numb = dict(((i,f), numbers[i][f]) for i in range(len(numbers)) for f in range(len(numbers[0])))

结果如下:

{(0, 1): 1, (1, 2): 3, (2, 4): 3, (0, 0): 4, (2, 0): 1, (2, 2): 4, (1, 4): 7, (1, 1): 7, (1, 5): 4, (1, 3): 2, (0, 5): 2, (2, 1): 7, (2, 5): 2, (0, 4): 3, (1, 0): 2, (2, 3): 3, (0, 3): 2, (0, 2): 1}

问题是我想在字典的键中将列表F的字符串用作f。 我希望有:

{(0, "O"): 1, (1, "R"): 3, (2, "V"): 3, (0, "M"): 4, ... (0, "O"): 1}

我试图像这样更改代码:

numb = dict(((i,f), numbers[i][f]) for i in range(len(numbers)) for f in F)

但我得到一个TypeError: list indices must be integers, not str回报TypeError: list indices must be integers, not str

有办法解决吗? 先感谢您!

这可以是您要找的东西吗?

numb = {(i,f): numbers[i][e] for i in range(len(numbers)) for e, f in enumerate(F)}

这里有两个问题,第一个是替换字符串列表时使用了太多括号(另外两个),所以语句的结尾应该是:

for f in F)

如果这样做,您将看到不再有语法问题,但是您将发现索引仍然有问题,因为您尝试使用字符串作为索引。 解决此问题的一种方法是使用索引方法从“ F”返回要使用的字母的位置

两项更正应为:

 numb = dict(((i,f), numbers[i][F.index(f)]) for i in range(len(numbers)) for f in F)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM