Python 从列表列表中仅提取一个指定单词
我有以下清单:Python 从列表列表中仅提取一个指定单词,python,regex,pandas,Python,Regex,Pandas,我有以下清单: my_list=[['12,5', 'users'], ['12,5', 'users'], ['1,35', 'giga'], ['1,35', 'giga'], ['old', '(11,46', 'users'], ['(11,46', 'users'], ['contact', '2.926.685', 'accounts'], ['2.926.685', 'accounts', 'new,'], ['2.926', 'accounts']] 我正在尝试
my_list=[['12,5', 'users'],
['12,5', 'users'],
['1,35', 'giga'],
['1,35', 'giga'],
['old', '(11,46', 'users'],
['(11,46', 'users'],
['contact', '2.926.685', 'accounts'],
['2.926.685', 'accounts', 'new,'],
['2.926', 'accounts']]
我正在尝试创建单独的列表,每个关键字一个:
keywords=['users', 'giga', 'accounts']
看看数字是否有差异。
因为列表中可能有一个以上的单词,例如在[2.926685,'Caldie','Nex',]中,我只需要考虑列表关键字中包含的单词。p>
预期产出将是:
对于用户:
12,5,12,5,11,46,11,46我不需要排除重复项,因为我对它们的频率感兴趣
对于giga:
账户:
我的困难在于从我的搜索列表中只提取关键字中包含的特定单词。完成此操作后,我应该创建与要提取的单词数相同的空列表
如有任何建议,将不胜感激 您可以遍历my_列表中的每个列表,检查与关键字中某个单词匹配的值,将关键字转换为一个集合以提高效率,如果找到,则使用defaultdict将数值存储到字典中以便于使用:
from collections import defaultdict
import re
my_list=[['12,5', 'users'],
['12,5', 'users'],
['1,35', 'giga'],
['1,35', 'giga'],
['old', '11,46', 'users'],
['11,46', 'users'],
['contact', '2.926.685', 'accounts'],
['2.926.685', 'accounts', 'new,'],
['2.926', 'accounts']]
keywords=set(['users', 'giga', 'accounts'])
result = defaultdict(list)
for l in my_list:
k = None
for v in l:
if v in keywords:
k = v
if re.match(r'[0-9,.]+$', v):
num = v
if k is not None:
result[k].append(num)
print({ k : v for k, v in result.items() })
输出:
{
'users': ['12,5', '12,5', '11,46', '11,46'],
'giga': ['1,35', '1,35'],
'accounts': ['2.926.685', '2.926.685', '2.926']
}
您可以迭代my_列表中的每个列表,检查与关键字中的单词匹配的值,将关键字转换为一个集合以提高效率,如果找到,则使用defaultdict将数值存储到字典中以便于使用:
from collections import defaultdict
import re
my_list=[['12,5', 'users'],
['12,5', 'users'],
['1,35', 'giga'],
['1,35', 'giga'],
['old', '11,46', 'users'],
['11,46', 'users'],
['contact', '2.926.685', 'accounts'],
['2.926.685', 'accounts', 'new,'],
['2.926', 'accounts']]
keywords=set(['users', 'giga', 'accounts'])
result = defaultdict(list)
for l in my_list:
k = None
for v in l:
if v in keywords:
k = v
if re.match(r'[0-9,.]+$', v):
num = v
if k is not None:
result[k].append(num)
print({ k : v for k, v in result.items() })
输出:
{
'users': ['12,5', '12,5', '11,46', '11,46'],
'giga': ['1,35', '1,35'],
'accounts': ['2.926.685', '2.926.685', '2.926']
}
谢谢你,尼克。我可以问您如何分割值和名称(例如用户)以绘制值频率吗?通常,我使用变量名并绘制其values@LucaDiMauro您可以访问结果['users'],只获取usersPerfect的值。非常感谢@不用担心,我很高兴能帮上忙。谢谢你@Nick。我可以问您如何分割值和名称(例如用户)以绘制值频率吗?通常,我使用变量名并绘制其values@LucaDiMauro您可以访问结果['users'],只获取usersPerfect的值。非常感谢@卢卡迪毛罗不用担心,我很高兴能帮上忙。