(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())
那是不起作用的。例如,v
是list
,您不能upper
列表...
使用词典理解更好地进行了这种转换,以重建新版本的d
。您可以使用列表理解为每个值进行上部:
d = {k:[v.upper() for v in vl] for k,vl in d.items()}
对于您的第二个问题:由于1==True
,set
仅保留第一个插入,这是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设置对象只有它们之间的差异。