如何使python字典具有保存值的重复键?

如何使python字典具有保存值的重复键?,python,dictionary,Python,Dictionary,我正在做一项任务。是否存在这样的情况:字典可以有重复的键,并保存相同或不同的值。下面是我尝试做的一个例子: dict = { 'Key1' : 'Helo', 'World' 'Key1' : 'Helo' 'Key1' : 'Helo', 'World' } 我尝试过这样做,但是当我将任何值与key1关联时,它会被添加到同一个key1。 用字典能做到这一点吗?如果没有,我可以使用什么其他数据结构来实现这个过程 使用列表字典保存多个

我正在做一项任务。是否存在这样的情况:字典可以有重复的键,并保存相同或不同的值。下面是我尝试做的一个例子:

dict = {
        'Key1' : 'Helo', 'World'
        'Key1' : 'Helo'
        'Key1' : 'Helo', 'World'
       }
我尝试过这样做,但是当我将任何值与key1关联时,它会被添加到同一个key1。 用字典能做到这一点吗?如果没有,我可以使用什么其他数据结构来实现这个过程

使用列表字典保存多个值。 一个键有多个值的一种方法是使用列表字典

x = { 'Key1' : ['Hello', 'World'],
      'Key2' : ['Howdy', 'Neighbor'],
      'Key3' : ['Hey',   'Dude']
    }
要获取所需列表(或创建新列表),我建议使用setdefault

my_list = x.setdefault(key, [])
例如:

>>> x = {}
>>> x['abc'] = [1,2,3,4]
>>> x
{'abc': [1, 2, 3, 4]}
>>> x.setdefault('xyz', [])
[]
>>> x.setdefault('abc', [])
[1, 2, 3, 4]
>>> x
{'xyz': [], 'abc': [1, 2, 3, 4]}
为相同的功能使用
defaultdict
为了使这一点更加容易,有一个
defaultdict
对象简化了这一点。只需向其传递一个构造函数/工厂

from collections import defaultdict
x = defaultdict(list)
x['key1'].append(12)
x['key1'].append(13)
您还可以使用字典中的字典,甚至是集合字典

>>> from collections import defaultdict
>>> dd = defaultdict(dict)
>>> dd
defaultdict(<type 'dict'>, {})
>>> dd['x']['a'] = 23
>>> dd
defaultdict(<type 'dict'>, {'x': {'a': 23}})
>>> dd['x']['b'] = 46
>>> dd['y']['a'] = 12
>>> dd
defaultdict(<type 'dict'>, {'y': {'a': 12}, 'x': {'a': 23, 'b': 46}})
>>从集合导入defaultdict
>>>dd=默认dict(dict)
>>>dd
defaultdict(,{})
>>>dd['x']['a']=23
>>>dd
defaultdict(,{'x':{'a':23})
>>>dd['x']['b']=46
>>>dd['y']['a']=12
>>>dd
defaultdict(,{'y':{'a':12},'x':{'a':23,'b':46})
使用列表字典保存多个值。 一个键有多个值的一种方法是使用列表字典

x = { 'Key1' : ['Hello', 'World'],
      'Key2' : ['Howdy', 'Neighbor'],
      'Key3' : ['Hey',   'Dude']
    }
要获取所需列表(或创建新列表),我建议使用setdefault

my_list = x.setdefault(key, [])
例如:

>>> x = {}
>>> x['abc'] = [1,2,3,4]
>>> x
{'abc': [1, 2, 3, 4]}
>>> x.setdefault('xyz', [])
[]
>>> x.setdefault('abc', [])
[1, 2, 3, 4]
>>> x
{'xyz': [], 'abc': [1, 2, 3, 4]}
为相同的功能使用
defaultdict
为了使这一点更加容易,有一个
defaultdict
对象简化了这一点。只需向其传递一个构造函数/工厂

from collections import defaultdict
x = defaultdict(list)
x['key1'].append(12)
x['key1'].append(13)
您还可以使用字典中的字典,甚至是集合字典

>>> from collections import defaultdict
>>> dd = defaultdict(dict)
>>> dd
defaultdict(<type 'dict'>, {})
>>> dd['x']['a'] = 23
>>> dd
defaultdict(<type 'dict'>, {'x': {'a': 23}})
>>> dd['x']['b'] = 46
>>> dd['y']['a'] = 12
>>> dd
defaultdict(<type 'dict'>, {'y': {'a': 12}, 'x': {'a': 23, 'b': 46}})
>>从集合导入defaultdict
>>>dd=默认dict(dict)
>>>dd
defaultdict(,{})
>>>dd['x']['a']=23
>>>dd
defaultdict(,{'x':{'a':23})
>>>dd['x']['b']=46
>>>dd['y']['a']=12
>>>dd
defaultdict(,{'y':{'a':12},'x':{'a':23,'b':46})
使用列表字典保存多个值。 一个键有多个值的一种方法是使用列表字典

x = { 'Key1' : ['Hello', 'World'],
      'Key2' : ['Howdy', 'Neighbor'],
      'Key3' : ['Hey',   'Dude']
    }
要获取所需列表(或创建新列表),我建议使用setdefault

my_list = x.setdefault(key, [])
例如:

>>> x = {}
>>> x['abc'] = [1,2,3,4]
>>> x
{'abc': [1, 2, 3, 4]}
>>> x.setdefault('xyz', [])
[]
>>> x.setdefault('abc', [])
[1, 2, 3, 4]
>>> x
{'xyz': [], 'abc': [1, 2, 3, 4]}
为相同的功能使用
defaultdict
为了使这一点更加容易,有一个
defaultdict
对象简化了这一点。只需向其传递一个构造函数/工厂

from collections import defaultdict
x = defaultdict(list)
x['key1'].append(12)
x['key1'].append(13)
您还可以使用字典中的字典,甚至是集合字典

>>> from collections import defaultdict
>>> dd = defaultdict(dict)
>>> dd
defaultdict(<type 'dict'>, {})
>>> dd['x']['a'] = 23
>>> dd
defaultdict(<type 'dict'>, {'x': {'a': 23}})
>>> dd['x']['b'] = 46
>>> dd['y']['a'] = 12
>>> dd
defaultdict(<type 'dict'>, {'y': {'a': 12}, 'x': {'a': 23, 'b': 46}})
>>从集合导入defaultdict
>>>dd=默认dict(dict)
>>>dd
defaultdict(,{})
>>>dd['x']['a']=23
>>>dd
defaultdict(,{'x':{'a':23})
>>>dd['x']['b']=46
>>>dd['y']['a']=12
>>>dd
defaultdict(,{'y':{'a':12},'x':{'a':23,'b':46})
使用列表字典保存多个值。 一个键有多个值的一种方法是使用列表字典

x = { 'Key1' : ['Hello', 'World'],
      'Key2' : ['Howdy', 'Neighbor'],
      'Key3' : ['Hey',   'Dude']
    }
要获取所需列表(或创建新列表),我建议使用setdefault

my_list = x.setdefault(key, [])
例如:

>>> x = {}
>>> x['abc'] = [1,2,3,4]
>>> x
{'abc': [1, 2, 3, 4]}
>>> x.setdefault('xyz', [])
[]
>>> x.setdefault('abc', [])
[1, 2, 3, 4]
>>> x
{'xyz': [], 'abc': [1, 2, 3, 4]}
为相同的功能使用
defaultdict
为了使这一点更加容易,有一个
defaultdict
对象简化了这一点。只需向其传递一个构造函数/工厂

from collections import defaultdict
x = defaultdict(list)
x['key1'].append(12)
x['key1'].append(13)
您还可以使用字典中的字典,甚至是集合字典

>>> from collections import defaultdict
>>> dd = defaultdict(dict)
>>> dd
defaultdict(<type 'dict'>, {})
>>> dd['x']['a'] = 23
>>> dd
defaultdict(<type 'dict'>, {'x': {'a': 23}})
>>> dd['x']['b'] = 46
>>> dd['y']['a'] = 12
>>> dd
defaultdict(<type 'dict'>, {'y': {'a': 12}, 'x': {'a': 23, 'b': 46}})
>>从集合导入defaultdict
>>>dd=默认dict(dict)
>>>dd
defaultdict(,{})
>>>dd['x']['a']=23
>>>dd
defaultdict(,{'x':{'a':23})
>>>dd['x']['b']=46
>>>dd['y']['a']=12
>>>dd
defaultdict(,{'y':{'a':12},'x':{'a':23,'b':46})

我想您需要
集合。defaultdict

from collections import defaultdict
d = defaultdict(list)
list_of_values = [['Hello', 'World'], 'Hello', ['Hello', 'World']]
for v in list_of_values:
    d['Key1'].append(v)

print d

这将处理重复的键,而不是覆盖键,它将在值列表中附加一些内容。

我想您需要
集合。defaultdict

from collections import defaultdict
d = defaultdict(list)
list_of_values = [['Hello', 'World'], 'Hello', ['Hello', 'World']]
for v in list_of_values:
    d['Key1'].append(v)

print d

这将处理重复的键,而不是覆盖键,它将在值列表中附加一些内容。

我想您需要
集合。defaultdict

from collections import defaultdict
d = defaultdict(list)
list_of_values = [['Hello', 'World'], 'Hello', ['Hello', 'World']]
for v in list_of_values:
    d['Key1'].append(v)

print d

这将处理重复的键,而不是覆盖键,它将在值列表中附加一些内容。

我想您需要
集合。defaultdict

from collections import defaultdict
d = defaultdict(list)
list_of_values = [['Hello', 'World'], 'Hello', ['Hello', 'World']]
for v in list_of_values:
    d['Key1'].append(v)

print d

这将处理重复的键,而不是覆盖键,它将在值列表中附加一些内容。

键对于数据是唯一的。考虑使用某个键的其他值,或者考虑使用不同的数据结构来保存该数据。

例如:

  • 不要使用个人地址作为唯一的密钥,因为可能有几个人住在那里
  • 一个人的社会保险号码或驾驶执照是一个人更好的唯一身份证
  • 您可以创建自己的id以强制其唯一

键对于数据是唯一的。考虑使用某个键的其他值,或者考虑使用不同的数据结构来保存该数据。

例如:

  • 不要使用个人地址作为唯一的密钥,因为可能有几个人住在那里
  • 一个人的社会保险号码或驾驶执照是一个人更好的唯一身份证
  • 您可以创建自己的id以强制其唯一

键对于数据是唯一的。考虑使用某个键的其他值,或者考虑使用不同的数据结构来保存该数据。

例如:

  • 不要使用个人地址作为唯一的密钥,因为可能有几个人住在那里
  • 一个人的社会保险号码或驾驶执照是一个人更好的唯一身份证
  • 您可以创建自己的id以强制其唯一

键对于数据是唯一的。考虑使用某个键的其他值,或者考虑使用不同的数据结构来保存该数据。

例如:

  • 不要使用个人地址作为唯一的密钥,因为可能有几个人住在那里
  • 一个人的社会保险号码或驾驶执照是一个人更好的唯一身份证