假设字符串总是由 / 分隔,这就是我在 Python 中的做法
start1 = "A/B/C/D"
start2 = "B/D/E/A/B"
start3 = "D/A/A/B/D/C"
start4 = "C"
startList = [start1, start2, start3, start4]
print "startList: ", startList
fields = []
for start in startList:
for field in start.split('/'):
fields.append(field)
print "fields: ", fields
countDict = dict.fromkeys(fields)
print "countDict 1: ", countDict
for entry in countDict.keys():
countDict[entry] = fields.count(entry)
print "countDict 2: ", countDict
这是print 语句的输出:
startList: ['A/B/C/D', 'B/D/E/A/B', 'D/A/A/B/D/C', 'C']
fields: ['A', 'B', 'C', 'D', 'B', 'D', 'E', 'A', 'B', 'D', 'A', 'A', 'B', 'D', 'C', 'C']
countDict 1: {'A': None, 'C': None, 'B': None, 'E': None, 'D': None}
countDict 2: {'A': 4, 'C': 3, 'B': 4, 'E': 1, 'D': 4}
但是,如果起始字符串很大(数百万个条目)并且速度确实很重要,那么 Python 可能不是您的最佳选择。它易于学习,可读性强(也是我最喜欢的语言),但它不如 C 这样的编译语言快。话虽如此,它对于绝大多数应用程序来说已经足够快了
关于这种特殊方法的说明。有很多“更高级”的方法来计算列表中的条目。许多更快,更“pythonic”,但这应该足以满足您的目的。如果您想查看这些方法,只需在站点周围快速搜索即可。如果此方法中的任何内容不清楚,请告诉我,希望对您有所帮助!
如果您想要的是每个字符串中唯一条目的数量,这就是您要查找的内容:
start1 = "A/B/C/D"
start2 = "B/D/E/A/B"
start3 = "D/A/A/B/D/C"
start4 = "C"
startList = [start1, start2, start3, start4]
print "startList: ", startList
countDict = dict.fromkeys(startList)
print "countDict 1: ", countDict
for start in startList:
countDict[start] = len(set(start.split('/')))
print "countDict 2: ", countDict
这是print 语句的输出:
startList: ['A/B/C/D', 'B/D/E/A/B', 'D/A/A/B/D/C', 'C']
countDict 1: {'B/D/E/A/B': None, 'A/B/C/D': None, 'C': None, 'D/A/A/B/D/C': None}
countDict 2: {'B/D/E/A/B': 4, 'A/B/C/D': 4, 'C': 1, 'D/A/A/B/D/C': 4}