【发布时间】:2018-04-26 16:15:04
【问题描述】:
我有一个元组列表,其中每个 tuple 包含一个 string 和一个数字,格式如下:
[(string_1, num_a), (string_2, num_b), ...]
字符串是非唯一的,数字也是如此,例如(string_1 , num_m) 或 (string_9 , num_b) 可能存在于列表中。
我正在尝试创建一个以字符串为键的字典,并以该字符串为值的一组所有数字:
dict = {string_1: {num_a, num_m}, string_2: {num_b}, ...}
我已经通过以下嵌套集合理解的字典理解成功地做到了这一点:
#st_id_list = [(string_1, num_a), ...]
#st_dict = {string_1: {num_a, num_m}, ...}
st_dict = {
st[0]: set(
st_[1]
for st_ in st_id_list
if st_[0] == st[0]
)
for st in st_id_list
}
只有一个问题:st_id_list 的长度为 18,000 项。对于 500 个元组的列表,这段 sn-p 代码的运行时间不到 10 秒,但对于 18,000 个元组的完整运行,则需要超过 12 分钟。我不得不认为这是因为我在 dict 理解中嵌套了一个集合理解。
有没有办法避免这种情况,或者更聪明的方法?
【问题讨论】:
标签: python nested dictionary-comprehension set-comprehension