我们可以为字典中的键分配2种类型的值

时间:2018-01-18 19:51:20

标签: python dictionary

假设我有一个字典如下

my_dict = {
'key1' : 'str1',
'key2' : 'str2',
'key3' : 'str3'
}

我想为每个键分配额外的值,以便字典的结构如下

key1 : str1, num1
key2 : str2, num2
key3 : str3, num2

是否可以这样做,如果是,那么我们如何访问个别值。

5 个答案:

答案 0 :(得分:3)

如果您不需要在字典中更改这些多个值,请使用tuples作为值:

my_dict = {
    'key1' : ('str1', 56),
    'key2' : ('str2', 78),
    'key3' : ('str3', 89)
}

否则使用lists

my_dict = {
    'key1' : ['str1', 56],
    'key2' : ['str2', 78],
    'key3' : ['str3', 89]
}

在两种结构中,访问都是相同的:

>>> my_dict['key3']
('str3', 89)
>>> my_dict['key3'][0]
'str3'

但只能使用lists进行分配(因为它们是mutable数据结构):

>>> my_dict['key3'][1] = 99
>>> my_dict['key3'][1]
99
>>> my_dict
{'key3': ['str3', 99], 'key1': ['str1', 56], 'key2': ['str2', 78]}

答案 1 :(得分:1)

是的,你可以指定一个元组:

my_dict = {
  'key_0': ('val_0', 'val_1')
  ...
}

并且如此访问:

my_dict['key_0'][0]   # 'val_0'

答案 2 :(得分:1)

您可以将值添加为元组或列表,如下所示:

my_dict = {
'key1' : [str1, num1],
'key2' : [str2, num2],
'key3' : [str2, num2]
}

这将是列表方式。您可以使用相应的索引访问您的值。

my_dict ['key1'] [0]将是字符串,my_dict ['key1'] [1]将是数字。

祝你好运!

答案 3 :(得分:1)

如果您想稍后追加

,可以建立列表
d= {'a':[1], 'b':[10]}
d['a'].append(2)
print(d) # {'a': [1, 2], 'b': [10]}
print(d['a'][1]) # 2

答案 4 :(得分:0)

根据您的新号码列表,您可以使用zip

nums = [3, 4, 5]
my_dict = {
 'key1' : 'str1',
 'key2' : 'str2',
 'key3' : 'str3'
}
my_dict = {a:[b, c] for c, [a, b] in zip(nums, my_dict.items())}

输出:

{'key1': ['str1', 5], 'key2': ['str2', 4], 'key3': ['str3', 3]}