簡體   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