如何用另一个列表提供的数据填充列表?
例如,我有一个包含两个条目的列表:
list1=[['printer1', '172.1.1.1', '12345678', 'Xerox', 'Xerox Phaser ', 'Team@Departemnt'],['printer2', '172.1.1.2', '12345678', 'Xerox', 'Xerox Ricoh ', 'Team1@Departemnt1']]
我想修改一些条目,例如,我想拆分Department条目并在列表中添加两个带有循环的列
cache= list1[0][5].split('@')
list1[0][6]= cache[0]
list1[0][7]= cache[1]
答案 0 :(得分:0)
如果要就地修改列表,可以使用extend:
public static bool DoesRecordExist(string keyColumn, string keyValue, DataTable dt) {
if (dt != null && dt.Rows.Count > 0) {
int counter = dt.AsEnumerable().Where(r => string.Equals(SafeTrim(r[keyColumn]), keyValue, StringComparison.CurrentCultureIgnoreCase)).Count();
return counter > 0;
} else {
return false;
}
}
输出
list1 = [['printer1', '172.1.1.1', '12345678', 'Xerox', 'Xerox Phaser ', 'Team@Departemnt'],
['printer2', '172.1.1.2', '12345678', 'Xerox', 'Xerox Ricoh ', 'Team1@Departemnt1']]
for l in list1:
l.extend(l[-1].split('@'))
print(list1)
如果您想要一个新列表,也可以将拆分添加到列表中。
[['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']]
答案 1 :(得分:0)
您的数据是使用pandas
的理想格式:
但是,此方法不使用任何循环。
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']]
但是您可以轻松地使用熊猫将数据作为表进行处理
答案 2 :(得分:0)
如果您还希望摆脱新列表中的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']]