python - 如何返回仅对应于特定日期的字符串中分号后的数字?

标签 python string list

['2017-07-17', '2017-07-27', '2017-07-17;14', '2017-07-17;5', '2017-07-19;11', '2017-07-19;13', '2017-07-23;4', '2017-07-27;-1']

我想提取一个日期对应的分号右边的所有数字。例如,对于日期 '2017-07-17',我想返回列表 [14,5]。对于日期 2017-07-23,我只想返回 [4]

我该怎么做?我只知道遍历索引以提取数字,但这不会让我得到与特定日期对应的数字列表。

对于范围内的 eventIndex(2,len(路径)): 当前日期 = 路径 [eventIndex].split(';')[0]

只会得到我遍历​​的相应数字,但我不知道如何得到每个日期对应的列表。

最佳答案

选择合适的数据结构,例如以 list 作为工厂的 collections.defaultdict:

In [1233]: out = collections.defaultdict(list)

In [1234]: lst = ['2017-07-17', '2017-07-27', '2017-07-17;14', '2017-07-17;5', '2017-07-19;11', '2017-07-19;13', '2017-07-23;4', '2017-07-27;-1']

In [1235]: for i in lst:
      ...:     m, _, n = i.partition(';')
      ...:     if n:
      ...:         out[m].append(n)
      ...:         

In [1236]: out
Out[1236]: 
defaultdict(list,
            {'2017-07-17': ['14', '5'],
             '2017-07-19': ['11', '13'],
             '2017-07-23': ['4'],
             '2017-07-27': ['-1']})

In [1237]: out['2017-07-17']
Out[1237]: ['14', '5']

In [1238]: out['2017-07-23']
Out[1238]: ['4']

在这里,我们遍历列表,在 ; 上对字符串进行分区,并使用日期部分作为 out 字典的键,值为右侧附加子串。

关于python - 如何返回仅对应于特定日期的字符串中分号后的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51885673/

相关文章:

python - (重新)在 Django View 中使用字典

python - 访问不同 block 的 Jinja 宏

python - 我想知道如何将十进制转换为二进制

python - 使用连接表进行过滤

python - 从MySQL数据库中检索数据,在python中以字典格式

javascript - 在 Javascript 中用 1 个已知字符和一些未知字符分割字符串

c# - 如何将多个列表与自定义序列组合

c# - 如何在本地化字符串中包含变量?

c - 将十六进制字符串转换为十六进制字符数组的快速方法

java - 在大型 XML 文档的单次迭代中生成两个列表