python - 如何在仅对应于某些日期的字符串中返回分号后的数字?
问题描述
['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']
我想提取与日期对应的分号右侧的所有数字。例如,使用 date '2017-07-17'
,我想返回 list [14,5]
。而对于日期,2017-07-23
我只想返回[4]
。
我怎样才能做到这一点?我只知道遍历索引以提取数字,但这不会让我得到与某些日期相对应的数字列表。
for eventIndex in range(2,len(path)):
curr_date = path[eventIndex].split(';')[0]
只会让我得到遍历的相应数字,但我只是不知道如何获取与每个日期对应的列表。
解决方案
选择适当的数据结构,例如 a collections.defaultdict
withlist
作为工厂:
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
值是附加的右侧子字符串。
推荐阅读
- extjs - 如何在extjs中过滤树后删除所有最后一个可见子项的肘线
- java - 对数组进行排序
- ios - 使用 iOS 共享扩展共享到 NativeScript 应用程序
- python - 如果其中存在术语,如何仅将子列表附加到另一个列表?
- django - Django 1.7 和 1.8 之间迁移行为的变化
- java - 使用外部库 Spring Framework 使用模拟执行空手道 jar
- powerbi - 计算列在没有时显示循环依赖。怎么修?
- python-3.x - 不可散列的类型:在 csv 文件中工作时的“列表”
- java - 如何修复加载广告时尝试调用虚拟方法的问题
- php - 相同配置的复选框表单元素生成相同的 HTML 代码,但显示不同