Python多映射

最近,我们需要在C ++中使用一个多imap容器.我现在需要
编写等效的Python代码. Python如何处理?
k ['1'] ='汤姆'
k ['1'] ='鲍勃'
k ['1'] ='joe'
...
相同的键,但值不同.也没有覆盖....他们都必须
被插入容器
谢谢,
布拉德

# 回答1


8月27日,9:35*am,brad Python 2.5.2(R252:60911,Jul 31 2008,17:28:52)
[GCC 4.2.3(Ubuntu 4.2.3-2ubuntu7)]在Linux2上
键入"帮助","版权","学分"或"许可"以获取更多信息.
['汤姆','鲍勃','乔']
# 回答2


布拉德写道:
我不知道这是否完全等效,但是使用
这样的默认值?
['汤姆','鲍勃','乔']
-
# 回答3


布拉德写道:
子类别命令?
D级(dict):
def __setitem __(自我,项目,价值):
如果不是自我中的项目:super(d,self).__ setItem __(item,[])
self [item] .append(value)
['你好世界!']
米歇尔
# 回答4


迈克·肯特(Mike Kent)写道:
['汤姆','鲍勃','乔']
您的示例中只有一个" 1"键.我需要多个键
全部" 1".我以为Python会有内置的东西来处理此问题
那类的东西.
我需要一个真正的多件:
k ['1'] ='汤姆'
k ['1'] ='tommy'
没有汤米(Tommy)覆盖汤姆
东西要附加到.那仍然只是一张常规地图.
# 回答5


布拉德写道:
那就是多件.如果您真的需要句法糖,
实施很容易:
班级多边形(dict):
def __setitem __(self,key,value):
尝试:
self [键] .append(value)
除了KeyError:
dict .__ setItem __(self,key,[value])
-imiles
# 回答6


8月27日,12:52*pm,brad ['汤姆','鲍勃','乔']

您的示例中只有一个" 1"键.我需要多个键
全部" 1".我以为Python会有内置的东西来处理此问题
那类的东西.
我需要一个真正的多件:
k ['1'] ='汤姆'
k ['1'] ='tommy'
没有汤米(Tommy)覆盖汤姆
东西要附加到.那仍然只是一张常规地图.
我不明白列表地图不做的多件事做什么.

# 回答7


Castironpi写道:
它将两个键单独计数为单独的键. Python解决方法
没有...请参阅示例...注意" 4"的键
Python输出(使用K = [] Idea):
键:4值:[[13,'Visa'],[16,'Visa']]
钥匙:51值:[16,'MC']
钥匙:65值:[16,'Discover']
钥匙:2131值:[15,'jcb']
钥匙:300值:[14,'食客CB']
钥匙:301值:[14,'食客CB']
钥匙:302值:[14,'食客CB']
钥匙:303值:[14,'食客CB']
钥匙:304值:[14,'食客CB']
钥匙:305值:[14,'食客CB']
键:35值:[16,'jcb']
键:34值:[15,'amex']
关键:55值:[16,'MC或食客我们和CA']
钥匙:36值:[14,'diners intl']
键:37值:[15,'amex']
钥匙:1800值:[15,'jcb']
钥匙:54值:[16,'MC']
关键:6011值:[16,'Discover']
钥匙:52值:[16,'MC']
k EY:53值:[16,'MC']
钥匙:385值:[14,'食客CB']
21是dict的大小
C ++多映射
钥匙:1800值:JCB 15
钥匙:2131值:JCB 15
钥匙:300值:diners_club 14
钥匙:301值:diners_club 14
钥匙:302值:diners_club 14
钥匙:303值:diners_club 14
钥匙:304值:diners_club 14
钥匙:305值:diners_club 14
钥匙:34值:American_express 15
钥匙:35值:JCB 16
钥匙:36值:diners_club 14
钥匙:37值:American_express 15
钥匙:385值:diners_club 14
钥匙:4值:签证16
钥匙:4值:签证13
钥匙:51值:万事达卡16
钥匙:52值:万事达卡16
钥匙:53值:万事达卡16
钥匙:54值:万事达卡16
钥匙:55值:万事达卡16
钥匙:6011值:发现16
钥匙:65值:发现16
22是多图像的大小
# 回答8


迈尔斯写道:
iirc,C ++多映像提供了数据的平坦视图,因此您需要
还提供自定义枚举和迭代方法.
# 回答9


8月27日,1:38*pm,brad 它将两个键单独计数为单独的键. Python解决方法
没有...请参阅示例...注意" 4"的键
Python输出(使用K = [] Idea):
键:4值:[[13,'Visa'],[16,'Visa']]
C ++多映射
钥匙:4值:签证16
钥匙:4值:签证13
您正在寻找两行解决方法.一个键4元素是
总是k [4] [0],如果4在k中.删除k [4]有点棘手.
如果len(k [4])1:k [4] .pop(),else k.pop(4)[0]. (光滑的.)
# 回答10


8月27日,1:52*pm,brad ['汤姆','鲍勃','乔']

您的示例中只有一个" 1"键.我需要多个键
全部" 1".我以为Python会有内置的东西来处理此问题
那类的东西.
我需要一个真正的多件:
k ['1'] ='汤姆'
k ['1'] ='tommy'
没有汤米(Tommy)覆盖汤姆
东西要附加到.那仍然只是一张常规地图.
如果您要执行"打印k ['1']",该怎么办?
我能说的最好,您想要这样的关联列表:
k = []
K.Append((" 1","汤姆"))
K.Append((" 1"," Tommy"))
您可以这样迭代:
对于钥匙,k:k in k:
...
如果您需要用特定的"键"检索项目,则可能是
最容易保持分类不变,并进行插入和查找
使用一分解算法(请参阅一分子模块).
我不知道标准库中的任何类都可以完成所有这些
虽然为你.
出于好奇心,真正的多图像解决了一个词典
列表无法解决?
卡尔银行

# 回答11


卡尔·班克斯(Carl Banks)写道:
真的没什么.我进行了一些建议的工作的变化...
只是与Python一起,我通常不必使用周围的工作
通常一种明显的方法是正确的:
# 回答12


8月28日,2:41*pm,brad 真的没什么.我进行了一些建议的工作的变化...
只是与Python在一起,我通常不必使用工作 OUNDS和 *通常一种明显的方法是正确的: 我可能会建议C ++多映射是解决方法,而不是 使用dicts或dists或dicts的python方式? 太多的编程开销和线条噪音混乱 定义嵌套模板以将您的嵌套数据结构保存在C ++中,因此 STL提供了一个消除筑巢的容器. 在Python, 明显的嵌套方式很容易,尤其是现在 默认属性,因此没有理由提供多件. 卡尔银行

标签: python

添加新评论