[英]Converting list in list to dictionary
我得到了一個這樣的列表:
[['a','b','1','2']['c','d','3','4']]
我想將此列表轉換為字典,如下所示:
{
('a','b'):('1','2'),
('c','d'):('3','4')
}
例如, ('a', 'b') & ('c','d') 表示鍵, ('1','2') &('3','4') 表示值
所以我使用了這樣的代碼
new_dict = {}
for i, k in enumerate(li[0:2]):
new_dict[k] =[x1[i] for x1 in li[2:]]
print(new_dict)
,但它導致了不可散列的類型錯誤“列表”
我嘗試了其他幾種方法,但效果不佳.. 有什么辦法可以解決它嗎?
您不能將list
作為鍵,但tuple
是可能的。 此外,您不需要在列表上切片,而是在子列表上切片。
您需要 2 個第一個值sublist[:2]
作為鍵,相應的值是來自索引 2 sublist[2:]
new_dict = {}
for sublist in li:
new_dict[tuple(sublist[:2])] = tuple(sublist[2:])
print(new_dict) # {('a', 'b'): ('1', '2'), ('c', 'd'): ('3', '4')}
與字典理解相同
new_dict = {tuple(sublist[:2]): tuple(sublist[2:]) for sublist in li}
print(new_dict) # {('a', 'b'): ('1', '2'), ('c', 'd'): ('3', '4')}
我會使用list
-comprehension 以下方式:
lst = [['a','b','1','2']['c','d','3','4']]
dct = dict([(tuple(i[:2]),tuple(i[2:])) for i in lst])
print(dct)
或者dict
理解:
dct = {tuple(i[:2]):tuple(i[2:]) for i in lst}
輸出:
{('a', 'b'): ('1', '2'), ('c', 'd'): ('3', '4')}
請注意, list
切片會生成list
s,它們是可變的,不能用作dict
鍵,因此我使用tuple
將它們轉換為不可變的元組。
li = [['a','b','1','2'],['c','d','3','4']]
new_dict = {}
for item in li:
new_dict[(item[0], item[1])] = (item[2], item[3])
您可以使用 dict 理解來做到這一點:
li = [
['a', 'b', '1', '2'],
['c', 'd', '3', '4'],
]
new_dict = {(i[0], i[1]): (i[2], i[3]) for i in li}
print(new_dict)
# result
{('a', 'b'): ('1', '2'), ('c', 'd'): ('3', '4')}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.