GVKun编程网logo

如何在Python 3.4.3中打印排序的字典(python按顺序打印字典)

26

如果您对如何在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 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:如何在数据框的列中拆分排序的字典

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

小编典典

另一种方法是定义一个仅调用mindict并返回一个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中打印()一个字符串,没有例外?

python-3.x – 如何在Python3中打印()一个字符串,没有例外?

看似简单的问题:如何在 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终端中打印彩色文本?

如何解决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

解决方法

unicode

如何用Python将彩色文本输出到终端?表示实心块的最佳Unicode符号是什么?

在Python 3中打印以空格分隔的元素的列表

在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中打印以空格分隔的元素的列表的相关信息,请在本站查询。

本文标签: