python - 如果 Python 中的列表,如何迭代列表?
问题描述
我有这个清单:
my_list = [['ga:date'], ['ga:country', 'ga:date'], ['ga:country', 'ga:date']]
并尝试对其进行迭代以获得值及其位置,如下所示:
date 1
country 1
date 2
country 1
date 2
它应该稍后存储在 pandas df 中,值可以不同,没有修复。
最初它是一个字典列表:
my_original_list = [
[{'name': 'ga:date'}],
[{'name': 'ga:country'}, {'name': 'ga:date'}],
[{'name': 'ga:country'}, {'name': 'ga:date'}]
]
# But I got the values out of it in a list:
my_list = [li['name'] for li in my_original_list]
# the result
my_list = [
['ga:date'],
['ga:country', 'ga:date'],
['ga:country', 'ga:date']
]
已经破解了我的想法如何获得它,将不胜感激任何帮助
解决方案
将列表推导与enumerate
和flattening
用于元组列表:
my_list = [['ga:date'], ['ga:country', 'ga:date'], ['ga:country', 'ga:date']]
x = [(b, a) for i in my_list for (a, b) in enumerate(i, 1)]
print (x)
[('ga:date', 1), ('ga:country', 1), ('ga:date', 2), ('ga:country', 1), ('ga:date', 2)]
df = pd.DataFrame(x, columns = ['field','listIndex'])
print (df)
field listIndex
0 ga:date 1
1 ga:country 1
2 ga:date 2
3 ga:country 1
4 ga:date 2
或者如果可能的话改变列的位置:
x1 = [z for i in my_list for z in enumerate(i, 1)]
print (x1)
[(1, 'ga:date'), (1, 'ga:country'), (2, 'ga:date'), (1, 'ga:country'), (2, 'ga:date')]
df = pd.DataFrame(x1, columns = ['listIndex','field'])
print (df)
listIndex field
0 1 ga:date
1 1 ga:country
2 2 ga:date
3 1 ga:country
4 2 ga:date
此外,如果需要删除之前的值:
:
my_list = [['ga:date'], ['ga:country', 'ga:date'], ['ga:country', 'ga:date']]
x = [(b.split(':')[-1], a) for i in my_list for (a, b) in enumerate(i, 1)]
print (x)
[('date', 1), ('country', 1), ('date', 2), ('country', 1), ('date', 2)]
df = pd.DataFrame(x, columns = ['field','listIndex'])
print (df)
field listIndex
0 date 1
1 country 1
2 date 2
3 country 1
4 date 2
推荐阅读
- c++ - 如果我想在执行期间将其内存减少一半,我可以使用哪种数据结构
- spring - Spring Data mongodb:'year' 必须计算为整数
- php - Heroku 上的 Docker PHP + Apache 部署崩溃
- docker - 将多个 classFile 作为参数传递给 Dockerfile
- c# - 我们在运行时创建了许多按钮作为匿名对象。我们可以在这些按钮上添加一个 onlick 事件吗?
- alsa - 录制到脉冲音频流,并管理流之间的切换
- python - 在 Python 中使用 scikit learn 进行线性判别分析
- android - 仅更改 apk 中的权限并在 Playstore 上重新发布
- python - 直接从网络驱动器上的远程 git 存储库安装
- gitlab - 如何从 Gitlab API 获取“git show-branch”?