我有一个数组,其中包含来自我的csv文件的整个列,因为csv包含用户的联系信息及其当前组,因此有很多重复项。
因此,CSV中的用户属于一个组,但有时多个用户属于同一个组,现在这个python脚本的点太多了,就像排在同一组中的所有用户一样。我会更新主线程,所以它不会混淆更多ppl抱歉。
此脚本的最终目标是将该组与该组中用户的电话号码连在一起。如下所示。
GroupName, PhoneNumber1, PhoneNumber2, PhoneNumber3, PhoneNumber4, etc
示例:
Name, email, phonenumber, **group**
name1, name2, number1, ExampleGroup
所以我尝试使用它来排序:https://wiki.python.org/moin/HowTo/Sorting
它返回:
['a', ' ', 'E', 'g', 'i', 's', 'm', 'M', 'L', 'o', 'l', 'p', 'S', 'R', 't', 'h', 'e', 'n']
我目前正在使用的代码:
import csv
with open('Configtool.csv', 'rb') as f:
reader = csv.reader(f, delimiter=';', quoting=csv.QUOTE_NONE)
for row in reader:
groupname = row[5]
#print groupname
sortedgroup = list(set(groupname))
print sortedgroup
非常感谢您的帮助,
请注意,我是python的新手,所以请放轻松我:p
答案 0 :(得分:0)
您可以使用itertools.groupby
获取具有相同组的所有行,然后使用字典理解来创建将组映射到电话号码的字典。
import itertools
groups = itertools.groupby(reader, key=lambda row: row[3])
d = {group: [row[2] for row in rows] for (group, rows) in groups}
(假设该组处于位置3
并且电话号码位于行2
。此外,您可能必须删除循环,否则reader
迭代器已经筋疲力尽。)