簡體   English   中英

Python將這個列表元組變成字典的最快方法是什么?

[英]Python what is the fastest way to make this list tuples into a dict?

我有一個看起來像這樣的元組列表。

li = [('Replicate 1', '_E748_.txt'),
      ('Replicate 1', '_E749_.txt'),
      ('Replicate 2', '_E758_.txt'),
      ('Replicate 2', '_E759_.txt')]

創建這樣的字典的最快方法是什么?

{'Replicate1': ['_E748_.txt', '_E749_.txt'],
 'Replicate2': ['_E758_.txt', '_E759_.txt']}

特定

>>> li = [('Replicate 1', '_E748_.txt'),
...       ('Replicate 1', '_E749_.txt'),
...       ('Replicate 2', '_E758_.txt'),
...       ('Replicate 2', '_E759_.txt')]

>>> d = {}
>>> for k, v in li:
...     d.setdefault(k, []).append(v)
...
>>> d
{'Replicate 2': ['_E758_.txt', '_E759_.txt'], 'Replicate 1': ['_E748_.txt', '_E749_.txt']}

要么

>>> from collections import defaultdict
>>> d2 = defaultdict(list)
>>> for k, v in li:
...     d2[k].append(v)
...
>>> d2
defaultdict(<type 'list'>, {'Replicate 2': ['_E758_.txt', '_E759_.txt'], 'Replicate 1': ['_E748_.txt', '_E749_.txt']})

甚至過於花哨

>>> from itertools import groupby
>>> from operator import itemgetter
>>> get0, get1 = itemgetter(0), itemgetter(1)
>>> dict((key, list(map(get1, subit))) for key, subit in groupby(sorted(li), get0))
{'Replicate 2': ['_E758_.txt', '_E759_.txt'], 'Replicate 1': ['_E748_.txt', '_E749_.txt']}

暫無
暫無

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

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