簡體   English   中英

將嵌套列表轉換為帶有鍵和多個列表值(如果存在)的字典

[英]Convert nested list into dict with key and multiple list values if exist

我有一個嵌套列表如下。 由於列表非常龐大並且為了減少搜索時間,認為轉換為字典會更好。

以 innerlist[index] 為鍵,rest 為值。 Incase 鍵出現兩次需要在字典中添加值列表。

列表

[
 ['001', 'xxxx', 'xxxx'], 
 ['002', '1', 'H', '0', 'H'], 
 ['002', '1', 'Z', '0', 'H']
]

需要Dict如下

   {
        '001': ['xxxx', 'xxxx'],
        '002': [
                ['1', 'H','0', 'H'],
                ['1', 'Z','0', 'H']
        ],
    }

我用下面的代碼做到了,似乎仍然不是一個巨大列表的最佳方式。 同樣對於非重復項目,我得到包含 1 個項目的嵌套列表。 '001': [['xxxx', 'xxxx']], 讓我知道是否有更好的方法。

data_dict = dict()
for data in bytes_data:
    if data[0] in data_dict:
        data_dict[data[0]].append(data[1:])
    else:
        data_dict[data[0]] = [data[1:]]

如果您使用的是最新的 Python 版本(我認為是 3.5+),您可以更簡潔地執行此操作,例如:

data = [
  ['001', 'xxxx', 'xxxx'],
  ['002', '1', 'H', '0', 'H'],
  ['002', '1', 'Z', '0', 'H']
]

data_dict = {}

for key, *vals in data:
    data_dict.setdefault(key, []).append(vals)

但我建議對其進行基准測試,您擁有的代碼可能更有效,尤其是如果許多鍵在 src 列表中沒有重復條目時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM