Python 创建不重复的列表列表
我的数据结构重复很多。如果我要创建一个过滤列表来列出所有唯一的类型,我会这样做Python 创建不重复的列表列表,python,list,Python,List,我的数据结构重复很多。如果我要创建一个过滤列表来列出所有唯一的类型,我会这样做 type_ids = [] for record in file: type_id = record['type_id'] if type_id not in type_ids: type_ids.append(type_ids) 我将得到类似于type_id=['A','B','G']。现在我想要一个类似于类型的描述性名称以及id,在一个结构中,如types=[['a','Alph
type_ids = []
for record in file:
type_id = record['type_id']
if type_id not in type_ids:
type_ids.append(type_ids)
我将得到类似于type_id=['A','B','G']
。现在我想要一个类似于类型的描述性名称以及id,在一个结构中,如types=[['a','Alpha'],['B','Beta'],['G','Gamma']]
我试过了
types = []
for record in file:
type_id = record['type_id']
type_name = record['type_name']
if [type_id,type_name] not in types:
types.append([type_id,type_name])
我得到了一个列表,但有很多重复,并不是所有的类型都表示出来。这个代码有什么问题
types = set((r['type_id'], r['type_name']) for r in file)
Python有一个
set
类型的内置元素,它是无序的元素集合。您可以使用这一行创建一组唯一的(type\u id,type\u name)
元组。在原始代码中,您的if
语句将始终执行,这可能会导致大量重复type_id
是字符串列表;您的if语句正在检查列表的成员资格。在type\u id
中没有表单[type\u id,type\u name]
的列表。我不确定您是在现有的type\u id
中寻找成员资格,还是在正在构建的type
列表中寻找成员资格
相反,你想要这样的东西:
types = []
for record in file:
type_id = record['type_id'] # Assuming these two lines get the data correctly
type_name = record['type_name']
if type_id not in type_ids: # e.g. if 'A' in ['A', 'B', 'C']
# OR, if [type_id, type_name] not in types:
types.append([type_id], [type_name])
但是,我建议将您的信息存储为专门为相关键值对设计的格式:
types = {}
for record in file:
type_id = record['type_id']
type_name = record['type_name']
if type_id not in type_ids:
# OR, if type_id not in types:
types[type_id] = type_name
对于您想要表示的数据,我绝对推荐一个字典。我已经有了一个字典,可以从中提取这些数据。我需要将这些唯一的类型ID及其名称输入到数据库表中。如果
类型ID
的格式为['a',B''G']
,则要意识到其中没有列表。第二个代码块中的if
语句询问type\u id,type\u name]
内部是否存在嵌套列表id
,该列表永远不会为真,因此将始终执行if
块。我已对我的问题进行了编辑。从我的程序中的问题中提取问题时出现了打字错误。重复的内容会继续编辑。@yayu什么是文件
?谢谢。这很奇怪。不过,我需要这个数据结构是可变的,以便以后添加更多数据。那样的话,你有什么建议?