相关疑难解决方法(0)

列表转换为每个键有多个值的字典转换?

我有一个Python列表,其中包含键/值对:

l=[ [1, 'A'], [1, 'B'], [2, 'C'] ]
Run Code Online (Sandbox Code Playgroud)

我想将列表转换为字典,其中每个键的多个值将聚合到一个元组中:

{ 1:('A', 'B'), 2:('C',) }
Run Code Online (Sandbox Code Playgroud)

迭代解决方案是微不足道的:

l=[ [1, 'A'], [1, 'B'], [2, 'C'] ]
d={}
for pair in l:
    if d.has_key(pair[0]):
        d[pair[0]]=d[pair[0]]+tuple(pair[1])
    else:
        d[pair[0]]=tuple(pair[1])

print d

{1: ('A', 'B'), 2: ('C',)}
Run Code Online (Sandbox Code Playgroud)

是否有更优雅的Pythonic解决方案来完成这项任务?

python dictionary list type-conversion

52
推荐指数
3
解决办法
9万
查看次数

Python:在字典中添加元素以设置值

我在将值添加到集合中是字典中的值时遇到问题。我必须使用集合作为值而不是列表或其他任何东西。我已经看到了这个线程,但是并不能完全解决我的问题。

from collections import defaultdict
datoteka = open("vzorec.list","rt")
slovar = defaultdict(set)

for vrstica in datoteka:
    seznam = vrstica.split("\t")
    naslov = seznam[0]
    beseda = seznam[len(seznam)-1]
    beseda = beseda.strip()
    naslov2 = ""
    for crka in naslov:
        if crka == "(":
            break
        else:
            naslov2 = naslov2 + crka
    naslov = naslov2.lstrip('"')

    if naslov not in slovar:
        slovar[naslov] = set(beseda)

    elif naslov in slovar:
        slovar[naslov] = slovar[naslov].add(beseda)



print(slovar)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误,指出字符串类型没有添加功能。但是为什么python不理解我想要将集合作为值。我什至用defaultdict

python dictionary add set

2
推荐指数
2
解决办法
1万
查看次数

python中一个键的多个值

所以我的主要目标很简单,我希望在使用单个键时返回多个值.但是我遇到了错误和令人困惑的行为.我是Python的新手,所以我完全期望这个问题有一个简单的原因.

我有一个对象列表,list它只包含对象的索引.即

1
2
3
4 
etc.. 
Run Code Online (Sandbox Code Playgroud)

以及包含每个对象所属的组的文件,以相同的顺序列出.该文件是n行的单个值(n也是对象列表的长度.)即文件如下所示:

2
5
2
4
etc..
Run Code Online (Sandbox Code Playgroud)

意味着第一个对象属于组2,第二个对象属于组5,第三个属于组2,第四个属于组4.此文件将根据我的输入文件而改变.我尝试了以下两个建议(我可以找到).

编辑:我的最终目标:拥有一个字典,其中组号作为键,组中的对象作为值.

我首先查看了这个StackOverflow 问题,因为它非常相似,最后得到了这段代码:

def createdDict(list, file): 

    f = open(file, 'r')
    d={}
    i=0 

    for line in f:
        groupIndex = int(line)
        if groupIndex in d:
            d[groupIndex].append(list[i])
        else:
            d[groupIndex] = list[i]
        i +=1
    print d
    f.close()
Run Code Online (Sandbox Code Playgroud)

而这个错误:

AttributeError: 'Element' object has no attribute 'append'
Run Code Online (Sandbox Code Playgroud)

d[groupIndex]只是一个字典及其键,groupIndex也应该只是一个整数..而不是我之前在脚本中创建的类的对象.(为什么会出现此错误?)

然后,在我将这个问题变成后面之后,我修改了我的代码,因为我认为这是完成任务的另一种方法.我的代码看起来像这样:

def createdDict(list, file): 

    f = open(file, 'r')
    d={}
    i=0 

    for line in f:
        groupIndex …
Run Code Online (Sandbox Code Playgroud)

python dictionary

0
推荐指数
1
解决办法
9791
查看次数

标签 统计

dictionary ×3

python ×3

add ×1

list ×1

set ×1

type-conversion ×1