Python 如何访问列表中的不同数据类型元素?
我有一个带有值的table varchar列,我试图在Python中创建&访问列表元素以进行数据清理。我有如下列表(列示例值):Python 如何访问列表中的不同数据类型元素?,python,Python,我有一个带有值的table varchar列,我试图在Python中创建&访问列表元素以进行数据清理。我有如下列表(列示例值): Caller_ID = ['Ambulance',1,2,3,'Fire Crew',1,2] i、 e救护车后接“1、2、3”表示联系救护车3次 消防队后接“12”表示消防队联系了2次。 所以最后,在加载到目标表之前,我需要生成一个包含这个的列表 Caller_ID = ['Ambulance','Ambulance','Ambulance','Fire Crew
Caller_ID = ['Ambulance',1,2,3,'Fire Crew',1,2]
i、 e救护车后接“1、2、3”表示联系救护车3次
消防队后接“12”表示消防队联系了2次。
所以最后,在加载到目标表之前,我需要生成一个包含这个的列表
Caller_ID = ['Ambulance','Ambulance','Ambulance','Fire Crew','Fire Crew']
我需要提供报告说3个呼叫救护车部门,2个呼叫消防队部门等
我有一个使用JavaScript的静态实现
var n = Caller_ID;
var len = n.length;
for (i = 0; i < len; i++) {
if (n.indexOf('Ambulance') > -1) {
var nn = n[i + 1] = 'Ambulance';
} else if (n.indexOf('Fire Crew') > -1) {
nn = n[i + 1] = 'Fire Crew';`
}
}
我正在寻找使用Python的动态实现
对于此输入:
Caller_ID = ['Ambulance',1,2,3,'Fire Crew',1,2,'Policia',1]
我需要这个输出:
Caller_ID = ['Ambulance','Ambulance','Ambulance','Fire Crew','Fire Crew','Policia']
在浏览列表时,可以选择字符串和计数:
Caller_ID = ['Ambulance',1,2,3,'Fire Crew',1,2,'Police',1]
Callers = [] # list to hold result
current_caller, caller_count = "", 0 # temporary variables holding current element
# iterate through the list, pick each name and count
for elem in Caller_ID:
# new name found
if isinstance(elem, str): # in python2.X, use basestring
Callers.extend([elem] * caller_count) # store last name with appropriate count
current_caller, caller_count = elem, 0 # reset state
else:
caller_count += 1
Callers.extend([current_caller] * caller_count)
呼叫者
将包含您正在查找的项目。请注意,这假设名称不重复,或者在这种情况下需要相对位置和计数。这可以使用itertools.groupby
轻松完成,将整数分组在一起,并将它们与字符串分开。“技巧”是使用type
作为groupby
键函数
from itertools import groupby
Caller_ID = ['Ambulance', 1, 2, 3, 'Fire Crew', 1, 2, 'Police', 1]
newlist = []
for k, g in groupby(Caller_ID, key=type):
g = list(g)
if k is str:
s = g
else:
newlist.extend(s * len(g))
print(newlist)
输出
['Ambulance', 'Ambulance', 'Ambulance', 'Fire Crew', 'Fire Crew', 'Police']
这是我的解决方案,不需要导入,只是一个简单明了的for循环
Caller_ID = ['Ambulance',1,2,3,'Fire Crew',1,2]
new_list = []
for item in Caller_ID:
if type(item) == str:
current = item
else:
new_list.append(current)
>>> new_list
['Ambulance', 'Ambulance', 'Ambulance', 'Fire Crew', 'Fire Crew']
为什么不将数据类型转换为一个字典,该字典的值将是计数器,键将是服务/项目?从哪里获取列表?对于这个问题来说,这是一个相当不切实际的数据结构。只要有
Caller\u ID=['carbum',3,'Fire Crew',2,'Police',1]
就容易多了。你用Python做过什么吗?'Fire Crew',Fire Crew
应该是什么意思?第一个是字符串,但后者是什么?看起来不像Python语法。JavaScript代码还能工作吗?在我看来,它只是将列表中的每一个元素都设置为“救护车”。应该有一种——最好只有一种——显而易见的方法
Caller_ID = ['Ambulance',1,2,3,'Fire Crew',1,2]
new_list = []
for item in Caller_ID:
if type(item) == str:
current = item
else:
new_list.append(current)
>>> new_list
['Ambulance', 'Ambulance', 'Ambulance', 'Fire Crew', 'Fire Crew']