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什么是
文件
?谢谢。这很奇怪。不过,我需要这个数据结构是可变的,以便以后添加更多数据。那样的话,你有什么建议?