用另一个列表(Python3)提供的数据填充多维列表
如何用其他列表提供的数据填写列表 例如,我有一个包含两个条目的列表:用另一个列表(Python3)提供的数据填充多维列表,python,arrays,python-3.x,list,for-loop,Python,Arrays,Python 3.x,List,For Loop,如何用其他列表提供的数据填写列表 例如,我有一个包含两个条目的列表: list1=[['printer1', '172.1.1.1', '12345678', 'Xerox', 'Xerox Phaser ', 'Team@Departemnt'],['printer2', '172.1.1.2', '12345678', 'Xerox', 'Xerox Ricoh ', 'Team1@Departemnt1']] 我想修改一些条目,例如,我想拆分部门条目,并在列表中添加两列,带有一个循环 c
list1=[['printer1', '172.1.1.1', '12345678', 'Xerox', 'Xerox Phaser ', 'Team@Departemnt'],['printer2', '172.1.1.2', '12345678', 'Xerox', 'Xerox Ricoh ', 'Team1@Departemnt1']]
我想修改一些条目,例如,我想拆分部门条目,并在列表中添加两列,带有一个循环
cache= list1[0][5].split('@')
list1[0][6]= cache[0]
list1[0][7]= cache[1]
如果要就地修改列表,可以使用: 输出
[['printer1', '172.1.1.1', '12345678', 'Xerox', 'Xerox Phaser ', 'Team@Departemnt', 'Team', 'Departemnt'], ['printer2', '172.1.1.2', '12345678', 'Xerox', 'Xerox Ricoh ', 'Team1@Departemnt1', 'Team1', 'Departemnt1']]
如果需要新列表,也可以将拆分添加到列表中:
result = [l + l[-1].split('@') for l in list1]
您的数据是使用
熊猫的理想格式:
不过,此方法不使用任何循环
import pandas as pd
df = pd.DataFrame(list1, columns=['name', 'ip', 'number', 'manufacturer', 'device', 'dept'])
print(df)
name ip number manufacturer device dept
0 printer1 172.1.1.1 12345678 Xerox Xerox Phaser Team@Departemnt
1 printer2 172.1.1.2 12345678 Xerox Xerox Ricoh Team1@Departemnt1
然后您可以在@
上拆分:
df['team'], df['dept'] = df['dept'].str.split('@', 1).str
print(df)
name ip number manufacturer device dept team
0 printer1 172.1.1.1 12345678 Xerox Xerox Phaser Departemnt Team
1 printer2 172.1.1.2 12345678 Xerox Xerox Ricoh Departemnt1 Team1
如果您需要将其作为列表返回,您可以使用:
df.values.tolist()
[['printer1', '172.1.1.1', '12345678', 'Xerox', 'Xerox Phaser ', 'Departemnt', 'Team'],
['printer2', '172.1.1.2', '12345678', 'Xerox', 'Xerox Ricoh ', 'Departemnt1', 'Team1']]
但是,如果您还想摆脱team@dep
在您的新列表中,有一行代码可以做到这一点:
new_list = [l.extend(l.pop(-1).split('@')) or l for l in list1]
>>> new_list
[['printer1',
'172.1.1.1',
'12345678',
'Xerox',
'Xerox Phaser ',
'Team',
'Departemnt'],
['printer2',
'172.1.1.2',
'12345678',
'Xerox',
'Xerox Ricoh ',
'Team1',
'Departemnt1']]
谢谢,这正是我要找的
new_list = [l.extend(l.pop(-1).split('@')) or l for l in list1]
>>> new_list
[['printer1',
'172.1.1.1',
'12345678',
'Xerox',
'Xerox Phaser ',
'Team',
'Departemnt'],
['printer2',
'172.1.1.2',
'12345678',
'Xerox',
'Xerox Ricoh ',
'Team1',
'Departemnt1']]