我有包含嵌套元组的元组。找到元组中单个项目总数的最简单方法是什么?我正在使用python 3
元组看起来就像
(('BCG', 'OPV 0', 'Hep-B 1'), ('DTwP 1', 'IPV 1', 'Hep-B 2', 'Hib 1', 'Rotavirus 1', 'PCV 1'), ('DTwP 2', 'IPV 2', 'Hib 2', 'Rotavirus 2', 'PCV 2'), ('DTwP 3', 'IPV 3', 'Hib 3', 'Rotavirus 3', 'PCV 3'), ('OPV 1', 'Hep-B 3'), ('OPV 2', 'MMR-1'), ('Typhoid', 'Conjugate Vaccine'), 'Hep-A 1', ('MMR 2', 'Varicella 1', 'PCV booster'), ('DTwP B1/DTaP B1', 'IPV B1, Hib B1'), 'Hep-A 2', 'Typhoid booster', ('DTwP B2/DTaP B2', 'OPV 3', 'Varicella 2', 'Typhoid booster'), ('Tdap/Td', 'HPV'))我想要元组中所有项目的总数。
发布于 2015-09-23 03:57:39
如果您指的是整个数据集中的每个单独项,那么您可以很容易地这样做:
data = (('BCG', 'OPV 0', 'Hep-B 1'), ...)
unique = len(set(x for inner in data for x in inner))就这样。
它的工作方式是遍历每个内部元组,然后遍历每个元组中的每个项。将它们添加到集合中(所有项必须是唯一的),然后计算该集的大小。
编辑:也许我误解了“个别项目”,我以为你想忽略重复。
发布于 2015-09-23 04:00:05
您有一个元组的元组,并且想知道其中有多少项。这就意味着:
>>> t = (('BCG', 'OPV 0', 'Hep-B 1'), ('DTwP 1', 'IPV 1', 'Hep-B 2', 'Hib 1', 'Rotavirus 1', 'PCV 1'), ('DTwP 2', 'IPV 2', 'Hib 2', 'Rotavirus 2', 'PCV 2'), ('DTwP 3', 'IPV 3', 'Hib 3', 'Rotavirus 3', 'PCV 3'), ('OPV 1', 'Hep-B 3'), ('OPV 2', 'MMR-1'), ('Typhoid', 'Conjugate Vaccine'), 'Hep-A 1', ('MMR 2', 'Varicella 1', 'PCV booster'), ('DTwP B1/DTaP B1', 'IPV B1, Hib B1'), 'Hep-A 2', 'Typhoid booster', ('DTwP B2/DTaP B2', 'OPV 3', 'Varicella 2', 'Typhoid booster'), ('Tdap/Td', 'HPV'))
>>> sum(len(x) for x in t)
65t是元组的元组。x是t中的每个元组。这是所有x的长度之和。
发布于 2015-09-23 04:02:42
t = (('BCG', 'OPV 0', 'Hep-B 1'), ('DTwP 1', 'IPV 1', 'Hep-B 2', 'Hib 1', 'Rotavirus 1', 'PCV 1'), ('DTwP 2', 'IPV 2', 'Hib 2', 'Rotavirus 2', 'PCV 2'), ('DTwP 3', 'IPV 3', 'Hib 3', 'Rotavirus 3', 'PCV 3'), ('OPV 1', 'Hep-B 3'), ('OPV 2', 'MMR-1'), ('Typhoid', 'Conjugate Vaccine'), 'Hep-A 1', ('MMR 2', 'Varicella 1', 'PCV booster'), ('DTwP B1/DTaP B1', 'IPV B1, Hib B1'), 'Hep-A 2', 'Typhoid booster', ('DTwP B2/DTaP B2', 'OPV 3', 'Varicella 2', 'Typhoid booster'), ('Tdap/Td', 'HPV'))
sum(map(lambda x:len(x),t))https://stackoverflow.com/questions/32730662
复制相似问题