Python 3(1)单键中存在的字典Python上案例值.(2)为什么Python中的数据类型集不会返回真实元素



(1)摘要,该摘要在词典中使用字典和大写,并将其设置为同一键的字典中的每个值,例如。

给定:

d = {'a': ['amber', 'ash'], 'b': ['bart', 'betty']}

结果:

{'a': ['AMBER', 'ASH'], 'b': ['BART', 'BETTY']}

(2)为什么Datatype SET在打印时不返回TRUE元素?例如。 {'hi', 1, True}仅返回{'hi', 1}

对于(1)我正在使用类似的东西:

 d = {'a': ['amber', 'ash'], 'b': ['bart', 'betty']} 
 d.update((k, v.upper()) for k, v in d.items())

(1)

d2 = {key:[name.upper() for name in names] for key, names in d.items()}

(2)

这似乎是因为True == 1产生True,这是该集合用来检查添加值是否已经在集合中的,因此必须忽略。

您的尝试是:

d.update((k, v.upper()) for k,v in d.items())

那是不起作用的。例如,vlist,您不能upper列表...

使用词典理解更好地进行了这种转换,以重建新版本的d。您可以使用列表理解为每个值进行上部:

d = {k:[v.upper() for v in vl] for k,vl in d.items()}

对于您的第二个问题:由于1==Trueset仅保留第一个插入,这是1。但可能是True:示例:

>>> {True,1}
{1}
>>> {True,1,True}
{True}
>>> {1,True}
{True}
>>> 

更确定性:通过list来构建set,而不是使用set符号:

>>> set([True,1])
{True}
>>> set([1,True])
{1}

(1)可能更短,只是在一行中,如其他人所示,但这是复杂性和" pythonicity"之间的权衡:

d = {'a': ['amber', 'ash'], 'b': ['bart', 'betty']}
for k in d:
    d[k] = [i.upper() for i in d[k]]
print(d)

输出:

{'a': ['AMBER', 'ASH'], 'b': ['BART', 'BETTY']}

(2)因为 True == 1是真实的,而python设置对象只有它们之间的差异。

最新更新