如何在循环内的字典中的键中添加值?

2024-10-02 04:36:28 发布

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

我有以下清单:

x=['a','3','4','b','1','2','c','4','5']

我如何制作以下词典:

^{pr2}$

我尝试了以下方法:

Category = defaultdict(int)
for i in a:
    if Varius.is_number(i)==False:
        Category[i]=[]
        keys.append(i)
    else:
        Category[keys(i)] = i

键是创建的,但在插入值时遇到问题。(is_number是一个函数,它检查列表的值是数字还是字符串)MATLAB。第一个在Python中的一天。。在


Tags: 方法infalsenumberforifiskeys
3条回答

下面是一个实际使用defaultdict在普通dict上提供的功能的示例:

from collections import defaultdict

x=['a','3','4','b','1','2','c','4','5']

key='<unknown>' # needed if the first value of x is a number
category = defaultdict(list)  # defaultdict with list
for i in x:
    if i.isalpha():
        key = i;
    else:
        category[key].append(i) # no need to initialize with an empty list

print category

另外:对于类实例,应该使用小写的名称。大写名称通常是为类保留的。阅读pep8以获取样式指南。在

如果列表x中的键/值项间距相等,下面是构建字典的另一种方法。它使用了Python的一些内置特性和功能:

>>> keys = x[::3]
>>> values = [map(int, pair) for pair in zip(x[1::3], x[2::3])]
>>> dict(zip(keys, values))
{'a': [3, 4], 'b': [1, 2], 'c': [4, 5]}

要解释这里使用的是什么:

  • x创建新列表的列表切片:x[start:stop:step]
  • 这里zip获取两个列表,并生成一个包含每个列表第n个元素的元组列表
  • map(int, pair)将数字字符串的元组转换为整数列表
  • values是用列表理解构造的,对每一对都应用{}函数
  • dict将对列表转换为字典键/值

您可以使用itertools.groupby

>>> from itertools import groupby
>>> l=[list(g) for k,g in groupby(x,lambda x : x.isalpha())]
>>> p=[l[i:i+2] for i in range(0,len(l),2)]
>>> {i[0]:map(int,j) for i,j in p}
{'a': [3, 4], 'c': [4, 5], 'b': [1, 2]}

相关问题 更多 >

    热门问题