<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Sun, Feb 26, 2017 at 10:23 PM qhlonline <<a href="mailto:qhlonline@163.com">qhlonline@163.com</a>> wrot<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial" class="gmail_msg"><div class="gmail_msg">Hi, all</div><div class="gmail_msg">    I have a suggestion that, the sort() member method of the list instance, should return the 'self' as  the result of list.sort() call. </div><div class="gmail_msg">    Now list.sort() returns nothing, so that I can NOT write code like this:</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">    res =  {item: func(item) for item in item_list.sort()}</div><div class="gmail_msg"> </div><div class="gmail_msg">    It feels bad.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Regards!</div></div></blockquote><div><br></div><div>list.sort() does not return anything on purpose, to remind you that it operates by side effect (i.e. that calling list.sort() mutates the list in-place). If you want it to return the list, use sorted() to get a copy of the list.<br><br></div><div>Also, for your specific example, I wouldn't use a comprehension in the first place. I'd probably do something like this:<br><br></div><div>item_list.sort()<br></div><div>res = dict(zip(item_list, map(func, item_list)))<br><br></div><div>But sorting the item_list is pointless in this case, since dictionaries are unordered [1], so the sorting has no real effect in this case, other than the fact that the list is now sorted for the benefit of subsequent code, if that should be relevant.<br><br></div><div>[1] Dictionaries are ordered in CPython 3.6, but this behavior cannot be relied upon, as doing so means your code won't work on older versions of CPython, nor is it guaranteed to work in other implementations of Python 3.6.<br></div></div></div>