【发布时间】:2016-02-11 14:52:12
【问题描述】:
我正在寻找一种更 Pythonic 的方式来获取字典列表中每个键的值的最大长度。
我的方法是这样的
lst =[{'a':'asdasd', 'b': 123},{'a': 'asdasdasdas'}, {'a':123,'b':'asdasd'}]
dct = {}
for l in lst:
for key in l:
dct.update({key: max(dct.get(key,0), len(str(l.get(key,0))))})
print(dct)
输出给出
{'b': 6, 'a': 11}
需要 str 函数来获取整数(也包括非整数)的长度
这种方法是“pythonic”还是使用列表推导或类似方法的更流畅、更易读的方法。
【问题讨论】:
-
是 123 应该是 int 还是 string?
-
lst中每个dicts中的所有key都一样吗?
-
@SirParselot,我不知道整数。但是,我想处理 Nones -> 我使用了 str 函数。 @ Chad S. lst 中的第二个字典与其他字典没有相同的键。但是,如果您有一个使用此假设的解决方案,这也很好
-
我认为您的示例(以及所有给出的答案)都不是 Pythonic,因为尽管他们使用 Python 习语,但它们并不“清楚”:stackoverflow.com/questions/25011078/what-does-pythonic-mean - 也许您可以更清楚地了解您的愿望是pythonic
-
我从您的链接中引用:“所以基本上当有人说某些东西是非 Python 的时,他们是在说可以以更适合 Python 编码风格的方式重写代码。”我正在寻找这样的解决方案。因为,我是 python 新手,所以我想了解更多关于高效和清晰的编码方式。例如我的代码不是很可读。尤其是更新和最大部分可能会令人困惑。
标签: python python-3.x list-comprehension