首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >把列表变成字典

把列表变成字典
EN

Stack Overflow用户
提问于 2019-04-05 17:34:42
回答 3查看 59关注 0票数 0

我知道这个问题已经问过无数次了,但我很难想出解决问题的办法。

这是我的密码:

代码语言:javascript
复制
try:
    dict1={}
    main_list = [line.rstrip() for line in open("food01.csv")]
    print(main_list)
except IOError:
    print("Error opening file")

文件(CSV)的输出:

代码语言:javascript
复制
['lion,gazelle', 'jackal,grass,zebra,gazelle', 'gazelle,grass,acacia leaves', 'zebra,grass']

我想要的是这样的列表字典:

代码语言:javascript
复制
{'lion':['gazelle'],'jackal':['grass,zebra,gazelle'],'gazelle':['grass,acacia leaves'],'zebra':['grass']}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-05 17:41:05

您可以使用这样的嵌套dict理解:

代码语言:javascript
复制
{first: rest for cols in rows for first, *rest in (cols.split(','),)}

因此,鉴于:

代码语言:javascript
复制
rows = ['lion,gazelle', 'jackal,grass,zebra,gazelle', 'gazelle,grass,acacia leaves', 'zebra,grass']

这将返回:

代码语言:javascript
复制
{'lion': ['gazelle'], 'jackal': ['grass', 'zebra', 'gazelle'], 'gazelle': ['grass', 'acacia leaves'], 'zebra': ['grass']}
票数 6
EN

Stack Overflow用户

发布于 2019-04-05 17:40:51

这样就行了。

代码语言:javascript
复制
lst = ['lion,gazelle', 'jackal,grass,zebra,gazelle', 'gazelle,grass,acacia leaves', 'zebra,grass']

dct = {}
for l in lst:
    items = l.split(',')
    dct[items[0]] = items[1:]

print(dct)
#{'lion': ['gazelle'], 'jackal': ['grass', 'zebra', 'gazelle'], 'gazelle': ['grass', 'acacia leaves'], 'zebra': ['grass']}
票数 1
EN

Stack Overflow用户

发布于 2019-04-05 17:58:38

你需要有两个列表来做这个。1对于键1的值,尝试将捕食者和捕食者分成2个列表,然后使用zip将它们合并到字典中。

代码语言:javascript
复制
keys = ["lion", "jackal", 'gazelle']
values = [["gazelle"], ["grass, zebra, gazelle"], ["grass, acacia leaves"]]
dict1 = dict(zip(keys, values))
print(dict1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55540689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档