Python - 在Dict中打印键的字符串

时间:2013-01-22 21:43:26

标签: python python-3.x

我的代码如下,

prices = {'banana':'4', 'apple':'2', 'orange':'1.5', 'pear':'3'}
stock = {'banana':6, 'apple':0, 'orange':32, 'pear':15}

print(prices.keys)
print("price :" + str(prices.values))
print("stock :" + str(stock.values))

我不明白为什么我会吐出一个看起来好像我要求的类型。是什么赋予了?

实际上,我的代码逻辑是错误的。

我希望代码吐出以下内容

键 价格:价值 股票:价值

例如,这应该是它的外观

苹果 价格:2 股票:0

5 个答案:

答案 0 :(得分:6)

你需要调用方法来获得有用的东西:

print (prices.keys())

然而,在python3.x中,这仍然不是特别适合打印,因为它会打印你可能不想看到的额外垃圾。

您可能需要考虑对str.joindict.keys()返回的对象使用dict.values()

print (' '.join(prices.keys()))

str.join几乎可以满足您的期望。左侧的字符串是在您传递给join的可迭代中的每个元素之间插入的分隔符。例如:

"!".join(["foo","bar","baz"])

将生成字符串:"foo!bar!baz"。这里唯一的问题是,传递给str.join的iterable中的每个元素都必须是一个字符串。


至于你的编辑,

prices = {'banana':'4', 'apple':'2', 'orange':'1.5', 'pear':'3'}
stock = {'banana':6, 'apple':0, 'orange':32, 'pear':15}
prices.keys() & stock.keys()  #{'orange', 'pear', 'banana', 'apple'}
for item in (prices.keys() & stock.keys()):
    print (item,"price:",prices[item],"stock:",stock[item])

输出:

orange price: 1.5 stock: 32
pear price: 3 stock: 15
banana price: 4 stock: 6
apple price: 2 stock: 0

似乎就是你想要的。

答案 1 :(得分:3)

prices = {'banana':'4', 'apple':'2', 'pear':'3'}
stock = {'banana':6, 'orange':32, 'pear':15}
for item in (prices.keys() & stock.keys()):
    print (item,"price:",prices.get(item,'-'),"stock:",stock.get(item,0))

可生产

orange price: - stock: 32
pear price: 3 stock: 15
banana price: 4 stock: 6
apple price: 2 stock: 0

如果股票和价格字典在每个字典中包含不同的friuts('keys'),则使用get with default将会有所帮助。 .get()函数在这里确实有用。

正如mgilson所提到的,下面一行是创建全套水果的地方。

prices.keys() & stock.keys()  #{'orange', 'pear', 'banana', 'apple'}

我也使用

之前的设置完成了这项工作
set(prices.keys().extend(stock.keys())

但我更喜欢&方法。

答案 2 :(得分:1)

前两个答案建议使用<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/web_view_relative_layout" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/activity_main"> <View android:id="@+id/divider" android:layout_width="0dp" android:layout_height="1dp" android:background="?android:attr/listDivider" app:layout_constraintBottom_toTopOf="@id/web_view_documentation" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/> <WebView android:id="@+id/web_view_documentation" android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintBottom_toTopOf="@id/native_banner_ad_container" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/divider"/> <RelativeLayout android:id="@+id/native_banner_ad_container" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/web_view_documentation"/> </android.support.constraint.ConstraintLayout> ,但是note that会返回.keys()类型的对象,而不是像字符串列表那样的可索引对象。要以字符串形式获取键列表,只需将字典转换为列表即可:dict_keys

list(my_dict)

答案 3 :(得分:0)

由于两个词典/对象都具有相同的键,因此您可以使用简单的for循环迭代其中一个词典并打印每个项目的价格和库存。

prices = {"banana": 4, "apple": 2, "orange": 1.5, "pear": 3}
stock  = {"banana": 6, "apple": 0, "orange": 32, "pear": 15}
for key in prices:
    print "stock: %s" % stock[key]
    print "prices: %s" % prices[key]

答案 4 :(得分:0)

prices = {"banana": 4, "apple": 2, "orange": 1.5, "pear": 3}
stock  = {"banana": 6, "apple": 0, "orange": 32, "pear": 15}
for key in prices:
    print key
    print "stock: %s" % stock[key]
    print "prices: %s" % prices[key]

输出:

orange
stock: 32
prices: 1.5
pear
stock: 15
prices: 3
banana
stock: 6
prices: 4
apple
stock: 0
prices: 2
=> None