如何在Python字典中为每个键添加多个值

4

我的程序需要输出一个名字列表,每个名字对应三个数字,但我不知道如何编写代码。有没有一种方法可以像这样使用字典 cat1 = {"james":6, "bob":3} ,但每个键对应三个值?


4
每个键的值可以是一个列表:{"james":[1, 2, 3], "bob":[0, 7]}。 - santosh.ankr
相关链接:https://dev59.com/honca4cB1Zd3GeqP5g0t#29246754 - BlackVegetable
4个回答

5

两个答案都可以。@santosh.ankr使用了一个列表字典。@Jaco de Groot使用了一个集合字典(这意味着您不能有重复的元素)。

如果您正在使用列表(或其他内容)字典,有时会很有用的是默认字典

通过这个,即使没有实例化,您也可以将项目添加到字典中的项中:

>>> from collections import defaultdict
>>> cat1 = defaultdict(list)
>>> cat1['james'].append(3)   #would not normally work
>>> cat1['james'].append(2)
>>> cat1['bob'].append(3)     #would not normally work
>>> cat1['bob'].append(4)
>>> cat1['bob'].append(5)
>>> cat1['james'].append(5)
>>> cat1
defaultdict(<type 'list'>, {'james': [3, 2, 5], 'bob': [3, 4, 5]})
>>> 

3
每个键的值可以是一个集合(无序不重复元素列表)。
cat1 = {"james":{1,2,3}, "bob":{3,4,5}}
for x in cat1['james']:
    print x

或者一个列表(有序元素的序列)。
cat1 = {"james":[1,2,3], "bob":[3,4,5]}
for x in cat1['james']:
    print x

2
cat1中键的值是set。这只是需要指出的一点。 - Zizouz212
1
我几乎总是使用 set() 调用显式声明集合,以避免与字典混淆。你真的不应该在了解它是什么之前检查冒号。 - santosh.ankr
你也可以使用一个包含键的元组的字典: cat1 = {"james": (1, 2, 3), "bob": (3, 4, 5)} - William Stuart

1

每个键的键名和值:

student = {'name' : {"Ahmed " , "Ali " , "Moahmed "} , 'age' : {10 , 20 , 50} }

for keysName in student:
    print(keysName)
    if keysName == 'name' :
        for value in student[str(keysName)]:
            print("Hi , " + str(value))
    else:
        for value in student[str(keysName)]:
            print("the age :  " + str(value))

并且输出:

name
Hi , Ahmed 
Hi , Ali 
Hi , Moahmed 
age
the age :  50
the age :  10
the age :  20

0

在同一个字典键中添加多个值:

subject = 'Computer'
numbers = [67.0,22.0]

book_dict = {}
book_dict.setdefault(subject, [])

for number in numbers
   book_dict[subject].append(number)

结果:

{'Computer': [67.0, 22.0]}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接