[英]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.