python 如何查询字典中的列表中的元素/ 如何将嵌套列表的内部转化成独立的字符串

python 如何查询字典中的列表中的元素/ 如何将嵌套列表的内部转化成独立的字符串

问题描述:

现有一个嵌套列表:
[['name', 'nationality', 'gender'], ['Mary', 'Britain', 'Female'], ['John', 'Norway', 'Male'], ['Murphy', 'Ireland', 'Female'], ['Sara', 'Norway', 'Female']],

通过zip分配可以得到以列表形式完成的字典:
{'name': ['Mary', 'John', 'Murphy', 'Sara'], 'nationality': ['Britain', 'Norway', 'Ireland', 'Norway'], 'gender': ['Female', 'Male', 'Female', 'Female']}

但目的是为了做inverted index,所以希望获得的结果是:
{'name': 'Mary, John, Murphy, Sara',
'nationality': 'Britain, Norway, Ireland, Norway',
'gender': 'Female, Male, Female, Female'}

请问该如何操作?
或者有什么办法可以直接查询列表形式字典中的元素吗?

你可以直接用

a=['name', 'nationality', 'gender']
print(','.join(a))

这种形式将列表转化为字符串的集合
对处理后的字典中的每个键做对应操作即可
有帮助望采纳~
示例转换代码如下:

input = {'name': ['Mary', 'John', 'Murphy', 'Sara'], 'nationality': [
    'Britain', 'Norway', 'Ireland', 'Norway'], 'gender': ['Female', 'Male', 'Female', 'Female']}
for k, v in input.items():
    input[k] = ",".join(v)
print(input)

img

子列表用",".join()拼接成字符串即可
你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

# 通过zip分配可以得到以列表形式完成的字典:
dic = {'name': ['Mary', 'John', 'Murphy', 'Sara'], 'nationality': ['Britain', 'Norway', 'Ireland', 'Norway'], 'gender': ['Female', 'Male', 'Female', 'Female']}

for k,v in dic.items():
    dic[k] = ",".join(v)

print(dic)

img

使用pandas读取成字典比用zip更便捷,然后键值进行字符拼接即可,参考代码如下:

lst = [['name', 'nationality', 'gender'], ['Mary', 'Britain', 'Female'], [
    'John', 'Norway', 'Male'], ['Murphy', 'Ireland', 'Female'], ['Sara', 'Norway', 'Female']]
import pandas as pd 
df=pd.DataFrame(lst[1:],columns=lst[0])
new={} 
for k,v in df.to_dict('list').items():
    new.update({k:",".join(v)})
print(new)

运行结果:

{'name': 'Mary,John,Murphy,Sara', 'nationality': 'Britain,Norway,Ireland,Norway', 'gender': 'Female,Male,Female,Female'}

如有帮助,请采纳。点击我回答右上角【采纳】按钮。