The result of tag: (4 results)

Python中如何通过列表中字典的值对列表进行排序

by LauCyun Jun 18,2017 17:36:17 5,904 views

我的到了一个字典的列表,我想对字典的值进行排序。

[{'name':'Homer', 'age':39}, {'name':'Bart', 'age':10}]

对name进行排序,应当是:

[{'name':'Bart', 'age':10}, {'name':'Homer', 'age':39}]

用key比用cmp更清晰明了:

newlist = sorted(list_to_be_sorted, key=lambda k: k['name'])

或者其他人的建议:

from operator import itemgetter
newlist = sorted(list_to_be_sorted, key=itemgetter('name'))

...

Tags Read More


Python中如何检查一个键在字典中是否存在

by LauCyun Sep 10,2016 17:02:25 4,648 views

在更新字典之前想检查键是否存在。我写了如下代码:

if 'key1' in dict.keys():
  print "blah"
else:
  print "boo"

我想这不是最好的方法,还有什么更好的方法?

in

>>> dict = {"a": 1, "b": 2, "c": 3, "d": 4}
>>> if "a" in dict:
...     print("YES");
... else:
...     print("NO");
...
YES
>>> if "d" in dict:
...     print("YES");
... else:
...     print("NO");
...
YES
>>> if "g" in dict:
...     print("YES");
... else:
...     print("NO");
...
NO
>>>

如果你想要获取属性只,你可以用dict.get()

>>> dict = {"a": 1, "b": 2, "c": 3, "d": 4}
>>> dict.get("a")
1
>>> dict.get("g")
>>>

所以,in是最好的方法。

...

Tags Read More


Python中如何在一个表达式里合并两个字典?

by LauCyun Apr 21,2016 20:31:18 4,108 views

我有两个Python字典,我想写一个表达式来返回两个字典的合并。update()方法返回的是空值而不是返回合并后的对象。

>>> x = {'a':1, 'b': 2}
>>> y = {'b':10, 'c': 11}
>>> z = x.update(y)
>>> print z
None
>>> x
{'a': 1, 'b': 10, 'c': 11}

怎么样才能最终让值保存在z而不是x?

可以用下面的方法:

z = dict(x.items() + y.items())

最后就是你想要的最终结果保存在字典z中,而键b的值会被第二个字典的值覆盖。

>>> x = {'a':1, 'b': 2}
>>> y = {'b':10, 'c': 11}
>>> z = dict(x.items() + y.items())
>>> z
{'a': 1, 'c': 11, 'b': 10}

如果你用的是Python3的话稍微有点麻烦:

>>> z = dict(list(x.items()) + list(y.items()))
>>> z
{'a': 1, 'c': 11, 'b': 10}

还可以这样:

z = x.copy()
z.update(y)

(全文完)

...

Tags Read More


Python中用字典的值对字典进行排序

by LauCyun Feb 12,2016 17:03:12 3,674 views

我有个字典,字典的值来自于数据库:一个是字符串,一个是数字。字符串是唯一的,所以键就是字符串。

我可以用键来排序,但是怎么用值来排序呢?

注:我已经看过另一个问题How do I sort a list of dictionaries by values of the dictionary in Python? - Stack Overflow,或许这种方法可以,但是我确实只需要一个字典,我想看看还有其他更好的方法。

对字典进行排序是不可能的,只有把字典转换成另一种方式才能排序。字典本身是无序的,但是像列表元组等其他类型是有序的。所以你需要用一个元组列表来表示排序的字典。

例子:

import operator
x = {1: 2, 3: 4, 4:3, 2:1, 0:0}
sorted_x = sorted(x.items(), key=operator.itemgetter(1))

sorted_x是一个元组列表,用每个元组的第二个元素进行排序dict(sorted_x) == x

如果想要用键来进行排序:

import operator
x = {1: 2, 3: 4, 4:3, 2:1, 0:0}
sorted_x = sorted(x.items(), key=operator.itemgetter(0))

你也可以:

sorted(d.items(), key=lambda x: x[1])

...

Tags Read More