加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

字典中具有多个值的键(Python)

发布时间:2020-12-20 11:50:15 所属栏目:Python 来源:网络整理
导读:我有以下列表(我已从列表中省略了一些值): all_examples= ['A,1,1','B,2,'C,4,4','D,5',...] 我需要创建一个字典,以便键具有多个值. dict = {"A":[1,1],"B":[2,1]} 我找了一些可能的解决方案,但无法让它在我的工作. 解决方法 对于python3,您可以使用dict co
我有以下列表(我已从列表中省略了一些值):

all_examples=   ['A,1,1','B,2,'C,4,4','D,5',...]

我需要创建一个字典,以便键具有多个值.

dict = {"A":[1,1],"B":[2,1]}

我找了一些可能的解决方案,但无法让它在我的工作.

解决方法

对于python3,您可以使用dict comp,使用扩展的可迭代解包来拆分列表中的每个字符串并创建从拆分元素中删除的键/值:

l = ['A,5']

d = {k: list(map(int,rest)) for k,*rest in (s.split(",") for s in l) }

对于python2,语法不太好:

l = ['A,5']

d = {s[0]: map(int,s[1:] ) for s in (s.split(",") for s in l)}

两者都应该给你这样的东西:

In [32]:  d = {k: list(map(int,") for s in l) } 
In [33]: d
Out[33]: {'A': [1,'B': [2,'C': [4,4],'D': [4,5]}

为了打破它,内部的exp创建我们的分裂字符串:

In [35]: list (s.split(",") for s in l)
Out[35]: [['A','1','1'],['B','2',['C','4','4'],['D','5']]

然后在python3的情况下,对于k,* rest in .. k是列表的第一个元素,* rest语法基本上意味着其他一切.

In [37]: for k,") for s in l):
              print(k,rest)
   ....:     
A ['1','1']
B ['2','1']
C ['4','4']
D ['4','5']

所以将它们放在一起使用for循环创建dict将是:

In [38]: d = {}

In [39]: for k,") for s in l):
              d[k] = list(map(int,rest))
   ....:     

In [40]: d
Out[40]: {'A': [1,5]}

或者在python2的情况下:

In [42]: d = {}

In [43]: for spl in (s.split(",") for s in l):
              d[spl[0]] = list(map(int,spl[1:]))
   ....:     

In [44]: d
Out[44]: {'A': [1,5]}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读