“列表”对象没有属性“查找”

Joa*_*oSa 5 python string dictionary list find

我知道这是一个基本问题,但是我是python的新手,无法弄清楚如何解决它。

我有一个类似下一个示例的列表:

entities = ["#1= IFCORGANIZATION($,'Autodesk Revit 2014 (ENU)',$,$,$)";, "#5= IFCAPPLICATION(#1,'2014','Autodesk Revit 2014 (ENU)','Revit');"]
Run Code Online (Sandbox Code Playgroud)

我的问题是如何以"entities"下列格式将列表中的信息添加到字典中:

dic = {'#1= IFCORGANIZATION' : ['$','Autodesk Revit 2014 (ENU)','$','$','$'], '#5= IFCAPPLICATION' : ['#1','2014','Autodesk Revit 2014 (ENU)','Revit']
Run Code Online (Sandbox Code Playgroud)

我试图用这个做的"find",但我发现了以下错误: 'list' object has no attribute 'find'

而且我不知道如何在没有查找方法的情况下执行此操作。

Tri*_*max 10

如果您想知道某个值是否在列表中,您可以使用in,如下所示:

>>> my_list = ["one", "two", "three"]
>>> "two" in my_list
True
>>> 
Run Code Online (Sandbox Code Playgroud)

如果您需要获取列表中值的位置,则必须使用index

>>> my_list.index("two")
1
>>> 
Run Code Online (Sandbox Code Playgroud)

请注意,列表的第一个元素的索引为 0。


zha*_*hen 4

您可以用来str.split处理字符串。首先用 分割每个元素字符串'(',maxsplit 为 1:

In [48]: dic=dict(e[:-1].split('(', 1) for e in entities) #using [:-1] to filter out ')'
    ...: print dic
    ...: 
{'#5= IFCAPPLICATION': "#1,'2014','Autodesk Revit 2014 (ENU)','Revit')", '#1= IFCORGANIZATION': "$,'Autodesk Revit 2014 (ENU)',$,$,$)"}
Run Code Online (Sandbox Code Playgroud)

然后将字典中的每个值拆分为','

In [55]: dic={k: dic[k][:-1].split(',') for k in dic}
    ...: print dic
{'#5= IFCAPPLICATION': ['#1', "'2014'", "'Autodesk Revit 2014 (ENU)'", "'Revit'"], '#1= IFCORGANIZATION': ['$', "'Autodesk Revit 2014 (ENU)'", '$', '$', '$']}
Run Code Online (Sandbox Code Playgroud)

请注意,字典中的键值对是无序的,正如您可能会看到的那样,'#1= IFCORGANIZATION'它首先没有显示。