相关疑难解决方法(0)

将dict转换为OrderedDict

我在collections.OrderedDict上课时遇到了一些麻烦.我在Raspberry上使用Python 2.7,这是Raspberry Pi的Debian发行版.我正在尝试打印两个词典,以便进行文本冒险的比较(并排).订单对于准确比较至关重要.无论我尝试用他们通常无序的方式打印字典.

这是我在RPi上执行的操作:

import collections

ship = {"NAME": "Albatross",
         "HP":50,
         "BLASTERS":13,
         "THRUSTERS":18,
         "PRICE":250}

ship = collections.OrderedDict(ship)

print ship
# OrderedDict([('PRICE', 250), ('HP', 50), ('NAME', 'Albatross'), ('BLASTERS', 13), ('THRUSTERS', 18)])
Run Code Online (Sandbox Code Playgroud)

显然有些东西不对,因为它正在打印函数调用并将键和值组放入嵌套列表中......

这是我通过在PC上运行类似的东西得到的:

import collections

Joe = {"Age": 28, "Race": "Latino", "Job": "Nurse"}
Bob = {"Age": 25, "Race": "White", "Job": "Mechanic", "Random": "stuff"}

#Just for clarity:
Joe = collections.OrderedDict(Joe)
Bob = collections.OrderedDict(Bob)

print Joe
# OrderedDict([('Age', 28), ('Race', 'Latino'), ('Job', 'Nurse')])
print Bob
# OrderedDict([('Age', 25), ('Race', 'White'), ('Job', …
Run Code Online (Sandbox Code Playgroud)

python ordereddictionary

118
推荐指数
4
解决办法
14万
查看次数

OrderedDict没有订购?

我正在尝试使用它OrderedDict,但它仍然不按顺序创建.例如,

from collections import OrderedDict
OrderedDict(a=1,b=2,c=3)
Run Code Online (Sandbox Code Playgroud)

产量

OrderedDict([('a', 1), ('c', 3), ('b', 2)])
Run Code Online (Sandbox Code Playgroud)

而不是预期的

OrderedDict([('a', 1), ('b', 2), ('c', 3)])
Run Code Online (Sandbox Code Playgroud)

我怎样才能确保按照我想要的正确顺序创建它?

python python-2.7

26
推荐指数
3
解决办法
5361
查看次数

pandas列名称赋值中的大写优先级

Pandas中的列名分配是否有理由支持大写而不是小写?

例:

dframe = DataFrame({'city':['Alma','Brian Head', 'Fox Park'],
                    'altitude':[3158,3000,2762]})
Run Code Online (Sandbox Code Playgroud)

返回一个DataFrame,其中包含订单高度,城市中的列.

鉴于:

dframe = DataFrame({'City':['Alma','Brian Head', 'Fox Park'],
                    'altitude':[3158,3000,2762]})
Run Code Online (Sandbox Code Playgroud)

返回一个DataFrame,其中包含City,altitude的顺序列.

这是大熊猫特有的或一般的python行为吗?

python pandas

2
推荐指数
1
解决办法
208
查看次数

Python:创建新对象之前检查对象是否已存在

请帮助我看看下面我缺少什么。我首先创建了班级的三个对象,并将它们添加到集合列表中。在创建任何其他对象之前,我要检查以确保该人在列表中不存在。如果此人已经存在,则不应再次创建该人。我希望通过执行此检查if prompt_fname == person.fname and prompt_lname == person.lname:。显然,我没有正确执行此操作,因为该程序仍然运行并创建了列表中已经存在的同一个人。它创造了这个人两次。我该如何进行修改以捕获此信息,以便不再创建列表中已有的人。同样,不应在循环的每次迭代中一次又一次地创建任何新人员。我是编程新手,所以请不要在答案中遗漏太多细节。非常感谢。

class Person(object):

    personslist = []
    '''Creates a person object'''
    def __init__(self, firstname, lastname):
        self.lname = lastname.title()
        self.fname = firstname.title()
        Person.personslist.append(self)

    def __str__(self):
        return "{0} {1}".format(self.fname, self.lname)

    def __repr__(self):
        return "{0} {1}".format(self.fname, self.lname)


Person("Adamu", "Emeka")
Person("Femi", "Ojukwu")
Person("Wole", "Jonathan")


prompt_fname = "Adamu"
prompt_lname = "Emeka"

print(Person.personslist)

for person in Person.personslist:
    if prompt_fname == person.fname and prompt_lname == person.lname:
        pass
    else:
        Person(prompt_fname, prompt_lname)

print(Person.personslist)
Run Code Online (Sandbox Code Playgroud)

产量

[Adamu Emeka, Femi Ojukwu, …
Run Code Online (Sandbox Code Playgroud)

python for-loop python-3.x

1
推荐指数
1
解决办法
3634
查看次数