标识特定字符串并将其放置在同一索引中

2024-05-14 12:53:20 发布

您现在位置:Python中文网/ 问答频道 /正文

关于我之前的文章,有没有可能把奇怪组合的动物和它们的属性(用#表示)分开

数据集:

the_list = pd.Series([["dog", "cat", "#paws"],["gorilla"],["goat", "#beard","#hoofs"],["goldfish", "#fins", "#bigeyes", "#scales"]])

我的代码:

category1 = []
category2 = []

for word_list in the_list:
    category1.append([{v : 1} for v in word_list if not "#" in v])
    category2.append([{v : 1} for v in word_list if "#" in v])

结果如下:

类别1:

[{'dog': 1}, {'cat': 1}, {'gorilla': 1}, {'goat': 1}, {'goldfish': 1}]

第2类:

[[{'#paws': 1}],
 [],
 [{'#beard': 1}, {'#hoofs': 1}],
 [{'#fins': 1}, {'#bigeyes': 1}, {'#scales': 1}]]

但是我需要的是连接同一索引的所有元素,而不是为它们创建单独的字典

类别1:

[{'dog': 1, 'cat': 1},
 {'gorilla': 1},
 {'goat': 1},
 {'goldfish': 1}]

类别2:

[{'#paws': 1}, # from dog, cat
 {'No Category 2': 1}, #from gorilla
 {"#beard" : 1,"#hoofs" : 1}, #from goat
 {'#fins': 1, '#bigeyes': 1, '#scales': 1}] #from goldfish

Tags: infromforlistcatdogpawsgoldfish
2条回答

使用dict

例如:

category1 = []
category2 = []

the_list = pd.Series([["dog", "cat", "#paws"],["gorilla"],["goat", "#beard","#hoofs"],["goldfish", "#fins", "#bigeyes", "#scales"]])
for word_list in the_list:
    category1.append(dict((v , 1) for v in word_list if not "#" in v))
    category2.append(dict((v , 1) for v in word_list if "#" in v)  or {'No Category 2': 1})

输出:

[{'cat': 1, 'dog': 1}, {'gorilla': 1}, {'goat': 1}, {'goldfish': 1}]
[{'#paws': 1},
 {'No Category 2': 1},
 {'#beard': 1, '#hoofs': 1},
 {'#bigeyes': 1, '#fins': 1, '#scales': 1}]

使用dict.fromkeys

category1 = []
category2 = []

for word_list in the_list:
    category1.append(dict.fromkeys([v for v in word_list if not '#' in v] or ['No Category 1'], 1))
    category2.append(dict.fromkeys([v for v in word_list if '#' in v] or ['No Category 2'], 1))

输出:

#category1
[{'cat': 1, 'dog': 1}, {'gorilla': 1}, {'goat': 1}, {'goldfish': 1}]

#category2
[{'#paws': 1},
 {'No Category 2': 1},
 {'#beard': 1, '#hoofs': 1},
 {'#bigeyes': 1, '#fins': 1, '#scales': 1}]

相关问题 更多 >

    热门问题