如果您对如何在Python3.4.3中打印排序的字典和python按顺序打印字典感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解如何在Python3.4.3中打印排序的字典的各种细节,并对pyt
如果您对如何在Python 3.4.3中打印排序的字典和python按顺序打印字典感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解如何在Python 3.4.3中打印排序的字典的各种细节,并对python按顺序打印字典进行深入的分析,此外还有关于Python Pandas:如何在数据框的列中拆分排序的字典、python-3.x – 如何在Python3中打印()一个字符串,没有例外?、Python-如何在Python终端中打印彩色文本?、在Python 3中打印以空格分隔的元素的列表的实用技巧。
本文目录一览:- 如何在Python 3.4.3中打印排序的字典(python按顺序打印字典)
- Python Pandas:如何在数据框的列中拆分排序的字典
- python-3.x – 如何在Python3中打印()一个字符串,没有例外?
- Python-如何在Python终端中打印彩色文本?
- 在Python 3中打印以空格分隔的元素的列表
如何在Python 3.4.3中打印排序的字典(python按顺序打印字典)
我正在为我的GCSE学习,其中一部分要求我打印按字母顺序排序的字典,并且打印内容应包含相关值。
我花了数小时试图找到答案,并浏览了该论坛上的各种帖子,但对于我的有限知识而言,大多数帖子太过复杂。
我可以打印按字母顺序排序的键,也可以打印排序后的值,但不能打印按字母顺序排序的键(附带值)。
这是我的简单测试代码
class1 = { ''Ethan'':''9'',''Ian'':''3'',''Helen'':''8'',''Holly'':''6'' } # create dictionaryprint(sorted(class1)) # prints sorted Keysprint(sorted(class1.values())) # Prints sorted values
我需要打印带有值的排序键-怎么做?
for k,v in class1.items(): print(k,v) # prints out in the format I want but not alphabetically sorted
答案1
小编典典class1 = { ‘Ethan’:‘9’,’Ian’:‘3’,’Helen’:‘8’,’Holly’:‘6’ }
>>> print(sorted(class1.items()))
[(‘Ethan’, ‘9’), (‘Helen’, ‘8’), (‘Holly’, ‘6’), (‘Ian’, ‘3’)]
>>> for k,v in sorted(class1.items()):... print(k, v)...Ethan 9Helen 8Holly 6Ian 3>>> for k,v in sorted(class1.items(), key=lambda p:p[1]):... print(k,v)...Ian 3Holly 6Helen 8Ethan 9>>> for k,v in sorted(class1.items(), key=lambda p:p[1], reverse=True):... print(k,v)...Ethan 9Helen 8Holly 6Ian 3
Python Pandas:如何在数据框的列中拆分排序的字典
我有一个像这样的dataFrame:
id asn orgs0 3320 {''Deutsche Telekom AG'': 2288}1 47886 {''Joyent'': 16, ''Equinix (Netherlands) B.V.'': 7}2 47601 {''fusion services'': 1024, ''GCE Global Maritime'':16859} 3 33438 {''Highwinds Network Group'': 893}
我想对实际上是字典的’orgs’列进行排序,然后提取得到两个不同列中具有最高值的对(k,v)。像这样:
id asn org value0 3320 ''Deutsche Telekom AG'' 22881 47886 ''Joyent'' 162 47601 ''GCE Global Maritime'' 16859 3 33438 ''Highwinds Network Group'' 893
目前,我正在运行此代码,但无法正确排序,因此我不确定如何提取具有最高价值的货币对。
df.orgs.apply(lambda x : sorted(x.items(),key=operator.itemgetter(1),reverse=True))
这给了我这样的清单:
id asn orgs0 3320 [(''Deutsche Telekom AG'', 2288)]1 47886 [(''Joyent'', 16),( ''Equinix (Netherlands) B.V.'', 7)]2 47601 [(''GCE Global Maritime'',16859),(''fusion services'', 1024)] 3 33438 [(''Highwinds Network Group'', 893)]
现在如何将键和最高值放入两个单独的列中?有人可以帮忙吗?
答案1
小编典典另一种方法是定义一个仅调用min
dict并返回一个Series的函数,以便您可以分配给多个列(函数主体取自@AlexMartelli的answer:
In [17]:def func(x): k = min(x, key=x.get) return pd.Series([k, x[k]])df[[''orgs'', ''value'']] = df[''orgs''].apply(func)dfOut[17]: asn id orgs value0 3320 0 Deutsche Telekom AG 22881 47886 1 Equinix (Netherlands) B.V. 72 47601 2 fusion services 10243 33438 3 Highwinds Network Group 893
编辑
如果您的数据包含空dics,那么您可以测试len
:
In [34]:df = pd.DataFrame({''id'':[0,1,2,3,4], ''asn'':[3320,47886,47601,33438,56], ''orgs'':[{''Deutsche Telekom AG'': 2288}, {''Joyent'': 16, ''Equinix (Netherlands) B.V.'': 7}, {''fusion services'': 1024, ''GCE Global Maritime'':16859}, {''Highwinds Network Group'': 893},{}]})dfOut[34]: asn id orgs0 3320 0 {''Deutsche Telekom AG'': 2288}1 47886 1 {''Equinix (Netherlands) B.V.'': 7, ''Joyent'': 16}2 47601 2 {''GCE Global Maritime'': 16859, ''fusion service...3 33438 3 {''Highwinds Network Group'': 893}4 56 4 {}In [36]:def func(x): if len(x) > 0: k = min(x, key=x.get) return pd.Series([k, x[k]]) return pd.Series([np.NaN, np.NaN])df[[''orgs'', ''value'']] = df[''orgs''].apply(func)dfOut[36]: asn id orgs value0 3320 0 Deutsche Telekom AG 22881 47886 1 Equinix (Netherlands) B.V. 72 47601 2 fusion services 10243 33438 3 Highwinds Network Group 8934 56 4 NaN NaN
python-3.x – 如何在Python3中打印()一个字符串,没有例外?
print(my_string)
但这不起作用.根据my_string的内容,环境变量和您使用的操作系统将引发UnicodeEncodeError异常:
>>> print("\u3423") Traceback (most recent call last): File "<stdin>",line 1,in <module> UnicodeEncodeError: ''ascii'' codec can''t encode character ''\u3423'' in position 0: ordinal not in range(128)
是否有一种干净的便携方式来解决这个问题?
扩展一点:这里的问题是python3字符串包含Unicode编码字符,而终端可以有任何编码.如果你很幸运,你的终端可以处理字符串中包含的所有字符,一切都会好的,如果你的终端不能(例如有人设置LANG = C),那么你得到一个例外.
如果在python3中手动编码字符串,则可以提供忽略或替换不可编码字符的错误处理程序:
"\u3423".encode("ascii",errors="replace")
对于print()我没有看到插入错误处理程序的简单方法,即使有,一个简单的错误处理程序似乎是一个可怕的想法,因为它会修改数据.一个条件错误处理程序可能会工作(即检查isatty()并根据该做什么来决定),但是看起来非常麻烦只是为了打印()一个字符串,我甚至不确定它会不会在某些情况下失败.
一个现实世界的例子,这个问题就是这个例子:
Python3: UnicodeEncodeError only when run from crontab
解决方法
Is there a clean portable way to fix this?
设置PYTHONIOENCODING =< encoding>:< error_handler>例如.,
$PYTHONIOENCODING=utf-8 python your_script.py >output-in-utf-8.txt
在您的情况下,我将您的环境(LANG,LC_CTYPE)配置为接受非ascii输入:
$locale charmap
Python-如何在Python终端中打印彩色文本?
如何解决Python-如何在Python终端中打印彩色文本??
我之所以做出回应,是因为我找到了一种在Windows上使用ANSI代码的方法,这样你就可以更改文本的颜色而无需任何内置模块:
进行此操作的行是os.system(''color'')
,但是要确保如果此人不在Windows上,则不会引起错误,你可以使用以下脚本:
import os, sys
if sys.platform.lower() == "win32":
os.system(''color'')
# Group of Different functions for different styles
class style():
BLACK = lambda x: ''\033[30m'' + str(x)
RED = lambda x: ''\033[31m'' + str(x)
GREEN = lambda x: ''\033[32m'' + str(x)
YELLOW = lambda x: ''\033[33m'' + str(x)
BLUE = lambda x: ''\033[34m'' + str(x)
magenta = lambda x: ''\033[35m'' + str(x)
CYAN = lambda x: ''\033[36m'' + str(x)
WHITE = lambda x: ''\033[37m'' + str(x)
UNDERLINE = lambda x: ''\033[4m'' + str(x)
RESET = lambda x: ''\033[0m'' + str(x)
print(style.YELLOW("Hello, ") + style.RESET("World!"))
注意:尽管此选项与其他Windows选项具有相同的选项,但是Windows即使使用此技巧也无法完全支持ANSI代码。并非所有的文本装饰颜色都起作用,并且所有“明亮”颜色(代码90-97和100-107)显示的颜色与常规颜色相同(代码30-37和40-47)
tl; dr:os.system(''color'')
在imports 之后添加。
Python版本: 3.6.7
解决方法
如何用Python将彩色文本输出到终端?表示实心块的最佳Unicode符号是什么?
在Python 3中打印以空格分隔的元素的列表
我有一个L
元素列表,例如自然数。我想将它们打印在一行中,并用一个 空格 作为分隔符。但是我 不想
在列表的最后一个元素之后(或第一个元素之前) 留 一个空格。
在Python 2中,可以使用以下代码轻松完成此操作。该print
语句的执行(我必须承认,这是个谜),避免在换行符前打印多余的空格。
L = [1,2,3,4,5]
for x in L:
print x,print
但是,在Python 3中,似乎(使用)该print
函数的等效代码在最后一个数字之后产生一个空格:
L = [1,5]
for x in L:
print(x,end=" ")
print()
当然,我的问题有简单的答案。我知道我可以使用字符串连接:
L = [1,5]
print(" ".join(str(x) for x in L))
这是一个很好的解决方案,但是与Python 2代码相比,我发现它违反直觉,而且绝对慢。另外,我知道我可以选择是否自己打印空格,例如:
L = [1,5]
for i,x in enumerate(L):
print(" " if i>0 else "",x,sep="",end="")
print()
但这又比我在Python 2中的糟糕。
所以,我的问题是,我在Python 3中缺少什么吗?该print
功能是否支持我正在寻找的行为?
我们今天的关于如何在Python 3.4.3中打印排序的字典和python按顺序打印字典的分享已经告一段落,感谢您的关注,如果您想了解更多关于Python Pandas:如何在数据框的列中拆分排序的字典、python-3.x – 如何在Python3中打印()一个字符串,没有例外?、Python-如何在Python终端中打印彩色文本?、在Python 3中打印以空格分隔的元素的列表的相关信息,请在本站查询。
本文标签: